【问题标题】:C# Regex Matching Whole Word with MetaChars inC# 正则表达式将整个单词与 MetaChars 匹配
【发布时间】:2014-05-30 12:22:03
【问题描述】:

我正在努力让搜索词的正则表达式正确

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 有关,但不确定是什么。

【问题讨论】:

    标签: c# .net regex match


    【解决方案1】:

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

    \bDESC \+ 7\%\B
    

    例子:

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

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

    【讨论】:

    • 很好的答案,非常感谢!有效,我明白我做错了什么:)
    【解决方案2】:

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

    在您的模式中,您有 sn-p \%\b。字符 % 不是单词字符(下一个字符也不是),因此锚点 word-boundary (\b) 将永远不会在这里匹配。

    我认为删除它会很好用...参见示例 here

    \bDESC\s\+\s7\%
    

    【讨论】:

    • 感谢Caio,您的回复也帮助我理解了为什么我的表达不正确:)
    猜你喜欢
    • 2011-08-07
    • 1970-01-01
    • 2010-11-15
    • 2012-01-06
    • 2017-07-08
    相关资源
    最近更新 更多