C#正则表达式与MetaChars匹配整个单词

时间:2014-05-30 12:22:03

标签: c# .net regex match

我正在努力争取正确的搜索词正确

DESC + 7%

在我的源数据中:

DESC          SFD        (HZ)

WGT.     15,000  LENGTH   15.00

LDWGT.     22,000          BBDESC + 7%o

GWGT     37,000                          ABAB

DESC + 7%        39,590               LLL

QA       SS SDB

我可以看到我需要逃避我所拥有的+和%,我只想匹配整个单词,而不是它的另一部分。

这是我当前的正则表达式字符串,但它似乎不匹配?

\bDESC \+ 7\%\b

有没有人知道为什么?我认为它与关闭\ b有关,但不确定是什么。

2 个答案:

答案 0 :(得分:1)

第二个\b是错误的,因为此锚点与非单词字符的事务匹配到单词字符,反之亦然\W - &gt ; \w\w - > \W

在您的模式中,您有代码段\%\b。字符%不是单词字符(下一个字符也不是),因此锚字边界\b)永远不会匹配

我认为删除它会很有效...参见示例here

\bDESC\s\+\s7\%

答案 1 :(得分:1)

你必须在最后设置一个上限:

\bDESC \+ 7\%\B

示例:

    字符串“ADESC + 7%Z”中的
  • 结果为“”
  • 字符串“DESC + 7%”中的
  • 结果为“DESC + 7%”

您不能在正则表达式字符串的末尾使用\ b,因为%字符不是单词字符。 当您搜索没有%字符的“DESC + 7”时,您可以使用正则表达式字符串。