繁体   English   中英

正则表达式匹配子字符串,但不以某些字符开头

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM