【发布时间】:2021-01-04 19:58:11
【问题描述】:
我正在努力实现以下目标: 我想否定子字符串 '::' 的出现,但仅限于字符串的某个部分。 例如:
a
我试图用这样的负前瞻来做到这一点:
a(?!.*::).*b
但是在'b'之后出现'::'也会使字符串不匹配,例如:'acb::'
有没有办法用正则表达式实现我想要的?
提前致谢!
【问题讨论】:
-
使用
a(?![^ab]*::)[^ab]*b或类似的东西。a和b只是较长模式的占位符吗? -
是的,它们是占位符。另外,你能解释一下为什么否定'a'吗?正如我所说,在
a和b之间可以是任何字符串,而不是'::' -
限制匹配时,需要定义边界。试试
a(?:(?!a|b|::).)*b。这匹配任何以a模式开头的字符串,然后匹配任何不以a、b和::模式开头的字符,零次或多次,直到b模式。 -
非常感谢。
标签: regex regex-lookarounds regex-negation