我要找到一个正则表达式来匹配单个(而不是多个)特定字符内的字符串。例如:
this is =one= and =two= but not ==three== or ==four== etc
这里我使用=
作为分隔符,并且我想要匹配one
and ,two
因为它们在单个分隔符内,但不匹配three
or ,four
因为它们在多个分隔符内。
我认为使用负向前瞻和后瞻可以达到目的:
/(?<!=)=(.+?)=(?!=)/g
但最后我也匹配了其他字符串,所以我显然没有正确理解热负前瞻和后瞻的工作原理。我以为这个表达式的意思是前面=
没有=
,等等。
更大的测试包括多行字符串:
this is =one= and =two= but not ==three== or ==four==.
====
this shouldn’t count at all
====
可能还有另一种方法,这种方法会受到欢迎,但我认为使用前瞻和后瞻的方法会更有教育意义。
我正在使用 PHP 并且计划使用该preg_replace_callback()
函数。
=(.+?)=
-在这里=
匹配双精度的“外部”==
,但.+
仍然允许=
在该位置。(?<!=)=([^=]+)=(?!=)
应该可以解决问题。