如果之前有特殊符号,则匹配确切的单词并且不匹配

时间:2018-01-17 14:58:19

标签: c# regex

我有一个简单的正则表达式,匹配字符串中的精确子字符串:

"\bXXX\b"

除了1个案例之外它很酷..如果在XXX之前有特殊符号它匹配子字符串:

This is ABC #XXX DEF

如何调整正则表达式以使其与#XXX不匹配?

2 个答案:

答案 0 :(得分:4)

如果你只想让空格作为分隔符,我会选择

<xsl:param name="url">file://888</xsl:param>

说明:

  • (^|(?<= ))XXX($|(?= )) :行的开头((^|(?<= )))或&#34;正面的背后&#34;在一个空间(^)。
  • (?<= ):行尾(($|(?= )))或&#34;肯定前瞻&#34;在一个空间($)。

lookbehind / lookahead表达式确保空间本身不是匹配的一部分。

答案 1 :(得分:1)

最好的方法是使用经典的空白或空间边界 不涉及任何变更,而且更快。

(?<!\S)XXX(?!\S)

这也将在字符串的开头或结尾处与XXX匹配。

此外,它可能只是一个空间边界

(?<![^ ])XXX(?![^ ])

这也会在字符串的开头或结尾处匹配XXX,但是强制
如果没有空格字符,则另一侧