[英]regex to match a substring, but not starting with certain characters
我正在搜索一个子字符串,例如test
,在一个更长的字符串中,例如alongstringtest
。
在这个例子中它会匹配 ok
但我想排除某些情况(当 'test' 前面有某些字符时)
例如
不匹配 'a-test' (因为 '-' )
不匹配 'abcgtest' (因为 'g' )
不匹配 'abc"test' (因为 '"' )
我已经很久没有写任何正则表达式了,所以这让我有点头疼!
使用负面回顾:
(?<![-g"])test
最简单的答案是
/(?<![g"-])test/
但是如果您需要更高的性能,还有优化的空间。 如果test
不能出现在字符串的最开头,那么就简单性和性能而言,以下显然是赢家:
/[^g"-]test/
否则,我会尝试以下操作:
/test(?<![g"-].{4})/s
/^test|[^g"-]test/
/^test/ || /[^g"-]test/
注意: -
在字符类中可以具有特殊含义,但如果它是第一个字符、否定^
之后的第一个字符或最后一个字符,则不是。 我总是最后使用它; 它使事情变得美好而简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.