如何将字符串中的确切单词与正则表达式匹配?

Trm*_*Trm 6 regex vba

我一直在努力寻找听起来很简单的问题的解决方案。

我需要在文本字符串中找到一个单词“HYD”(大写字母)。我需要匹配才能准确。澄清一下,任何包含“HYD”但不等于的单词/文本都不应匹配。空格和符号除外。


在以下示例中查找:
text1 HYD text2
text1,HYD.text2

在下面的例子中忽略:
text1 HYDROtext2
text1 MYHYD text2

我能得到的最接近的是以下模式:

objRegEx.Pattern = "[^az]HYD[^az]"

问题在于,如果字符串以“HYD”开头或结尾,它将找不到“HYD”。

Tyl*_*erH 5

来自评论:

\b为您的解决方案使用字边界标志:

objRegEx.Pattern = "\bHYD\b"
Run Code Online (Sandbox Code Playgroud)

只会命中整个值为 HYD 的字符串,而不是其中嵌入了其他一些字符的 HYD 的字符串。

  • 字符类中的@Andrew `\b` 是退格字符匹配模式,而不是单词边界。`\bHYD\b` 是匹配不包含字母、数字或 `_` 的 `HYD` 的有效示例。 (2认同)

Bat*_*eba 0

Userather InStr(s, "HYD"):InStr是VBA中的语言关键字,这种方法比使用正则表达式更快。

"HYD"这将返回中第一次出现的位置String s,如果"HYD"不包含则返回 0。