[英]regular expression negative group
我正在尝试以正则表达式匹配和捕获包含“ ball”的任何单词,而其前面没有“ foot”或“ basket”。 例如,我要匹配“排球”和“躲避球”,但不匹配“篮球”或“足球”。 重要的是,我不能使用积极的团体,而是消极的团体。 我试过的
[^(?:foot|basket)(ball)]
!(?:foot|basket)(ball)
找到相反的东西很简单:
(?:foot|basket)(ball)
但这不是我想要的。 我反过来需要它。
编辑:这是php,这是一个“ preg_replace”命令。
PHP使用PCRE。 因此,可以使用否定的后向语法:
(?<!foot|basket)ball
我将隔离所有子串的ball
,然后在其后不踩脚或踩篮。
\\b(?:(?!ball)\\w)*(?:(?<!foot)(?<!basket)ball(?:(?!ball)\\w)*)+\\b
或者,我认为pcre可以通过这种方式进行断言
\\b(?:(?!ball)\\w)*(?:(?<!foot|basket)ball(?:(?!ball)\\w)*)+\\b
格式:
\b
(?:
(?! ball )
\w
)*
(?:
(?<! foot )
(?<! basket )
ball
(?:
(?! ball )
\w
)*
)+
\b
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.