正则表达式匹配(但不是\)(

问题描述:

我试图创建一个正则表达式来匹配字符串中的每个(和),但排除\(和\)。这样我就可以替换每个括号但保留()()(5)(5)()(\)(9)(1)(87x)(100)(ASP \)()() (5)正则表达式匹配(但不是)(

编辑: 所需的结果后更换:55 \(9187x100 ASP \)5 那么我可以删除\拿到我想要的字符串,55(9187x100 ASP)5

编辑:我正在使用VB.NET

+1

您使用哪种语言?某些语言将允许您使用[lookbehead](http://*.com/a/546265/1721527)或[lookahead](http://*.com/q/9440084/1721527)。 – 2013-03-06 22:53:16

使用向后看,你只能匹配“(”或“)”未立即用“\”进行:

/(?<!\\)[\(\)]/ 
+0

使用后视提供优于否定字符类的优势吗? – average 2013-03-06 23:43:26

+0

后视不消耗角色,因此您没有比想要替换的更多的匹配问题。 – Daedalus 2013-03-07 00:06:44

+0

谢谢Daedalus – average 2013-03-07 00:11:27

这将匹配没有(他们之前和字符)他们面前斜线括号:

[^\\]\(
+0

这与字符串开头处的左括号无法匹配,就像他在他的例子中一样。 – 2013-03-06 23:25:01

好了,你要好好上下文考虑。所以首先你想没有\,然后你想()

[^\\]\(
[^\\]\) 

但你可以把两者paranthesis字符类

[^\\][\)\(]