正则表达式将排除捕获组

时间:2012-02-17 17:39:07

标签: regex

我正在写一个正则表达式,我需要捕获从“get”开始的多余的字符串。例如,getContactsgetBuildings应与正则表达式匹配。但是,有时候文本可能等于getDetails或get**Details。我不希望正则表达式包含这些。

我可以提出一个包含匹配组“详细信息”的正则表达式,但我想排除该捕获组,而不是包含它。

[Gg]et?\w+([Dd]etail)s

我对正则表达式不是很强,但是我对我所写的内容的理解是:

匹配“g”或“G”后跟“et”然后可选地任何单词字符,然后是匹配组,后跟“s”。

如何排除包含“详细信息”一词的结果?

2 个答案:

答案 0 :(得分:9)

这样的事可能适合你:

\b[Gg]et(?!\w*[Dd]etails)\w+s\b

答案 1 :(得分:3)

我相信你正在寻找零宽度负向前瞻......

http://www.regular-expressions.info/lookaround.html

[Gg]et(?![Dd]etail)\w+s

假设您要排除“获取详细信息”和“获取信息”,但接受“获取页面”和“获取MyDetails”(N.B.原始正则表达式中的尾随s已排除“获取信息”)