我一直在尝试让正则表达式在以下情况下返回以下内容。
XX -> XX
XXX -> XXX
XX/XX -> XX
XX/XX/XX -> XX/XX
XXX/XXX/XX -> XXX/XXX
我有以下正则表达式,但它们不起作用。
^[^/]+ => https://regex101.com/r/xvCbNB/1
=========
([A-Z])\w+ => https://regex101.com/r/xvCbNB/2
它们很近,但不在那里。
任何帮助将不胜感激。
最佳答案
您想要获取从开始到最后一次出现特定字符的所有文本,或者如果该字符丢失则直到字符串结尾。
使用
^(?:.*(?=\/)|.+)
参见 regex demo和 regex graph :
详情
^
- 字符串开始(?:.*(?=\/)|.+)
- 匹配两个备选方案之一的非捕获组,如果第一个匹配第一个,则第二个匹配'不被审判:.*(?=\/)
- 除换行符以外的任何 0+ 个字符,尽可能多,但不包括/
|
- 或.+
- 除换行字符外的任何 1+ 个字符,尽可能多。
关于Regex Express 返回 '/' 之前的所有字符,但如果有 2 个 '/' 则在此之前返回所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58725053/