Regex Express 返回 '/' 之前的所有字符,但如果有 2 个 '/' 则在此之前返回所有字符

标签 regex

我一直在尝试让正则表达式在以下情况下返回以下内容。

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 demoregex graph :

enter image description here

详情

  • ^ - 字符串开始
  • (?:.*(?=\/)|.+) - 匹配两个备选方案之一的非捕获组,如果第一个匹配第一个,则第二个匹配'不被审判:
    • .*(?=\/) - 除换行符以外的任何 0+ 个字符,尽可能多,但不包括 /
    • | - 或
    • .+ - 除换行字符外的任何 1+ 个字符,尽可能多。

关于Regex Express 返回 '/' 之前的所有字符,但如果有 2 个 '/' 则在此之前返回所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58725053/

相关文章:

javascript - Js正则表达式到Python正则表达式

javascript - 有没有办法只将顶级括号与正则表达式匹配?

regex - grepping shell脚本中包含特殊字符的变量

regex - 在AS3,Regexp中使用变量

c++ - 正则表达式问题

python - 用 re.sub 替换命名的捕获组

c++ - C++ 中的正则表达式搜索和替换组?

javascript - Prettify.JS 无法正确显示 HTML 脚本标签

javascript - 匹配以下数组中的双引号

regex - 如何使用正则表达式将 Visual Studio 二进制编辑器中的空字节 (0x00) 与查找匹配?