使正则表达式全有或全无


make regular expression all or nothing

所以我有这个正则表达式:

word1'/.+?'/word2($|[^'/]*)

我希望这个匹配

word/2342/word2

但不是

word/2342/word2/lalallaa

只要 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)(?!'/)呢?

在正则表达式/^abc$/中,^是只在字符串的开头查找模式,$只在字符串的末尾查找模式。组合起来,它将尝试找到与整个字符串的匹配项,就像全有或全无匹配一样。

因此,将您的正则表达式放在字符串中以匹配abc