正则表达式,瞄准一个字符,但不是如果它是某个单词的一部分

时间:2013-09-02 15:08:53

标签: c# regex

必须说我在RE方面不是很有经验。我一直在寻找几个例子,但似乎没有什么能满足我的需求。目前我有:

            Regex pattern = new Regex("[x]");

但如果它在“Exp”字样中,我不想选择“x”。我怎么能这样做?

Exp(x) - >我只需要将目标定位在支架内的

我已尝试"[^Exp][x]" "(?Exp)[x]"和变体,但没有获得所需的结果。

1 个答案:

答案 0 :(得分:2)

尝试使用字边界:

Regex pattern = new Regex(@"\bx\b");

此外,@避免了双重转义的任务。

单词边界是一个特殊字符,它将匹配字母,数字或下划线与非字母/非数字/非下划线。基本上,如果您有aa\b将只在开头和结尾匹配,而不是在中间匹配。如果您有a.2c,则\b将在a之前,a.之间,.2之间匹配,在c之后,但不在2c之间。您可以在this site上获得更多信息。


另外,如果你想得到括号中的x,你可以使用外观:

Regex pattern = new Regex(@"(?<=\()x(?=\))");

(?<=\()是一个积极的观察,并检查以确保在x之前有一个开放的paren。

(?=\))是一个积极的前瞻,检查以确保在x之后有一个结束时间。