子字符串的正则表达式单词边界匹配,即使不应该匹配

时间:2018-09-26 11:04:54

标签: regex

我有这个字符串asdas d HC-HMC BACK SIDE saas和这些正则表达式:

\bHC\b

\bHC-HMC BACK SIDE\b

我希望第一个正则表达式失败,而第二个则应匹配。尝试一下,我发现两者都匹配,但是我不明白为什么。

这是第一个正则表达式:https://regex101.com/r/hBZK2h/1

这是第二个:https://regex101.com/r/TEZmP6/1

我必须创建一个正则表达式,使其与边界HC-HMC BACK SIDE的字符串完全匹配,但与字符串HC的字符串完全匹配。有提示吗?

1 个答案:

答案 0 :(得分:3)

如果\bHC\b模式位于字符串的开头或前面带有非单词char(不是字母,数字和HC(和也许其他字符,取决于正则表达式Unicode支持),即在字符串末尾或紧随其后的是非单词char。请参见word boundary定义。

如果在_后跟(?!-),则可以向第一个正则表达式添加HC前瞻,以使其失败:

-

请参见regex demo