所以我有这个正则表达式:
word1\/.+?\/word2($|[^\/]*)
我想要这个匹配
word/2342/word2
但不是
word/2342/word2/lalallaa
IE。只要 word2 后跟一个斜杠,就完全不匹配
尽管如此,它仍然会匹配第二个正则表达式的 'word/2342/word2' 部分......我希望它根本不匹配任何东西
如何修复此正则表达式?
所以我有这个正则表达式:
word1\/.+?\/word2($|[^\/]*)
我想要这个匹配
word/2342/word2
但不是
word/2342/word2/lalallaa
IE。只要 word2 后跟一个斜杠,就完全不匹配
尽管如此,它仍然会匹配第二个正则表达式的 'word/2342/word2' 部分......我希望它根本不匹配任何东西
如何修复此正则表达式?
关于什么:
word\/.+?\/word2$
?
替换($|[^\/]*)
为(?!\/)
,或至少($|[^\/])
。现在,它将匹配任意数量的非斜线——包括零。
我已经尝试过:^(word1?\/.+?\/word2($|[^\/]*))
它在 Mac 的 RegExr 中工作,我输入了:word/2342/word2/word/2342/word2/
它只匹配第一个word/2342/word2
,但这只会检查字符串是否以你所要求的开头......即使是简单的(word)\/[0-9]{4}\/word2
也可以工作并允许中间的任何 4 个数字。 .但是您的问题令人困惑,您真正想要的是什么?
怎么样(.+\bword2\b)(?!\/)
?
在 regex/^abc$/
中,^
是仅在字符串的开头查找模式,而$
是仅在字符串的末尾查找模式。结合起来,它会尝试找到与整个字符串匹配的内容,就像全匹配或全匹配一样。
因此,将您的正则表达式放入字符串中以匹配abc
.