仅在出现一次时匹配的正则表达式

时间:2019-04-14 11:09:54

标签: regex

我写了这个正则表达式

(<b>)\b[a-zA-Z][a-zA-Z0-9_]{4,15}</b>

但是我希望只有在完全匹配的情况下才触发匹配,所以我认为我需要这样做

((<b>)\b[a-zA-Z][a-zA-Z0-9_]{4,15}</b>){1}

但是它似乎不起作用。我在做什么错了?

1 个答案:

答案 0 :(得分:2)

尝试使用否定的前瞻断言第二次匹配没有发生:

^(?!.*\b[a-zA-Z][a-zA-Z0-9_]{4,15}\b.*\b[a-zA-Z][a-zA-Z0-9_]{4,15}\b).*\b[a-zA-Z][a-zA-Z0-9_]{4,15}\b.*$

这是一个冗长的正则表达式,很难阅读。假设您要匹配单词BAT仅出现一次的字符串。我们可以这样写:

^(?!.*\bBAT\b.*\bBAT\b).*\bBAT\b.*$