繁体   English   中英

正则表达式阴性组

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

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