必须说我在RE方面不是很有经验。我一直在寻找几个例子,但似乎没有什么能满足我的需求。目前我有:
Regex pattern = new Regex("[x]");
但如果它在“Exp”字样中,我不想选择“x”。我怎么能这样做?
Exp(x)
- >我只需要将目标定位在支架内的
我已尝试"[^Exp][x]" "(?Exp)[x]"
和变体,但没有获得所需的结果。
答案 0 :(得分:2)
尝试使用字边界:
Regex pattern = new Regex(@"\bx\b");
此外,@
避免了双重转义的任务。
单词边界是一个特殊字符,它将匹配字母,数字或下划线与非字母/非数字/非下划线。基本上,如果您有aa
,\b
将只在开头和结尾匹配,而不是在中间匹配。如果您有a.2c
,则\b
将在a
之前,a
与.
之间,.
与2
之间匹配,在c
之后,但不在2
和c
之间。您可以在this site上获得更多信息。
另外,如果你想得到括号中的x
,你可以使用外观:
Regex pattern = new Regex(@"(?<=\()x(?=\))");
(?<=\()
是一个积极的观察,并检查以确保在x
之前有一个开放的paren。
(?=\))
是一个积极的前瞻,检查以确保在x
之后有一个结束时间。