必须说我在RE的经验不是很丰富。我一直在寻找几个例子,但似乎没有什么适合我的需要。目前我有:
Regex pattern = new Regex("[x]");
但如果它在“Exp”这个词内,我不想选择“x”。我怎样才能做到这一点?
Exp(x)
--> 我只需要定位括号内的 x
我已经尝试过"[^Exp][x]" "(?Exp)[x]"
各种变化,但没有得到想要的结果。
尝试使用单词边界:
Regex pattern = new Regex(@"\bx\b");
此外,@
避免了双重转义的任务。
单词边界是一个特殊字符,它将在字母、数字或下划线与非字母/非数字/非下划线之间进行匹配。基本上,如果你有aa
,\b
只会在开头和结尾匹配,而不是在中间。如果有a.2c
,\b
将匹配 before a
、 between a
and .
、 between .
and2
和 after c
,但不匹配 between 2
and c
。您可以在此网站上获得更多信息。
此外,如果您想获得x
括号中的内容,您可以使用环视:
Regex pattern = new Regex(@"(?<=\()x(?=\))");
(?<=\()
是一个积极的向后看,并检查以确保之前有一个开放的括号x
。
(?=\))
是一个积极的前瞻,并检查以确保在 . 之后有一个关闭的括号x
。