仅验证大写单词,如果单词使用REGEX继续使用小写,则忽略

时间:2016-08-11 07:55:58

标签: regex

我有以下段落:

AUTOCAD is the best CAd program and it wins an AWARD for this.

我想使用只捕获AUTOCADAWARD并忽略CAd的正则表达式,因为它包含小写。

我写了一个regex,如:

\b[A-Z0-9]+(?![a-z]+)

C也需要CAd ...但我不想要它!

如何提高我的正则表达式?

1 个答案:

答案 0 :(得分:2)

重点是\b[A-Z0-9]+(?![a-z]+)模式与C匹配,然后在A中测试CAd,但由于A正好在小写字母{之前{ {1}},d前瞻使引擎回溯,退后一步再次测试(?![a-z]+)以检查它是否后跟小写字母。因此,匹配为C

enter image description here

要在这种情况下使正则表达式失败,您需要使用占有量词C(或其等效原子组++)来禁止回溯到(?>[A-Z0-9]+) - {{3 } { - \b[A-Z0-9]++(?![a-z]+)trailing \b