我正在尝试创建一个与单词(仅 az)不匹配的正则表达式,如果单词:的末尾有 a但其他方式匹配它。然而,这个词在一个更大的正则表达式的中间,所以我(不认为)你可以使用否定的lookbehind和$元字符。
我尝试了这种消极的前瞻:
([a-z]+)(?!:)
Run Code Online (Sandbox Code Playgroud)
但是这个测试用例
example:
Run Code Online (Sandbox Code Playgroud)
只匹配
exampl
Run Code Online (Sandbox Code Playgroud)
而不是失败。
如果您使用的是负前瞻,则可以将其放在开头:
(?![a-z]*:)[a-z]+
Run Code Online (Sandbox Code Playgroud)
即:“匹配至少一个 az 字符,除非以下字符是 0 到 n 'az' 后跟一个 ':'”
这将支持更大的正则表达式:
X(?![a-z]*:)[a-z]+Y
Run Code Online (Sandbox Code Playgroud)
将匹配以下字符串:
Xeee Xrrr:Y XzzzY XfffZ
Run Code Online (Sandbox Code Playgroud)
只有'XzzzY'