2016-07-23 283 views
2

我有以下的正则表达式:正则表达式排除括号

[^a-zA-Z0-9](est)[^a-zA-Z0-9] 

测试字符串:

this is a test [est+where] esterius 

它应该只突出了第一个 “EST”。可悲的是括号[和+符号也匹配。但我只想要我的话,“EST”进行匹配,如果字符之前和之后的非字母而不是数字

+2

你不需要看看,只需访问捕获组('match.Groups [1] .Value') –

+1

我同意@WiktorStribiżew你根本不需要周围的环境。您的捕获组已经完全包含您需要的内容。我真的认为下面接受的答案是矫枉过正的。更不用说,在所有正则表达式中都不支持这种外观,所以如果你需要移植到JavaScript,下面的内容不起作用。 – Jeroen

回答

2

你应该使用向前看符号和lookbehinds的:

(?<=[^a-zA-Z0-9])est(?=[^a-zA-Z0-9]) 

未经基本上匹配的东西包括在最后的比赛中。

+0

哇,这个伎俩,非常感谢! –

+0

谢谢我也不知道 –