2013-03-06 217 views
0

我試圖創建一個正則表達式來匹配字符串中的每個(和),但排除\(和\)。這樣我就可以替換每個括號但保留()()(5)(5)()(\)(9)(1)(87x)(100)(ASP \)()() (5)正則表達式匹配(但不是)(

編輯: 所需的結果後更換:55 \(9187x100 ASP \)5 那麼我可以刪除\拿到我想要的字符串,55(9187x100 ASP)5

編輯:我正在使用VB.NET

+1

您使用哪種語言?某些語言將允許您使用[lookbehead](http://stackoverflow.com/a/546265/1721527)或[lookahead](http://stackoverflow.com/q/9440084/1721527)。 – 2013-03-06 22:53:16

回答

0

使用向後看,你只能匹配「(」或「)」未立即用「\」進行:

/(?<!\\)[\(\)]/ 
+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

2

這將匹配沒有(他們之前和字符)他們面前斜線括號:

[^\\]\(
+0

這與字符串開頭處的左括號無法匹配,就像他在他的例子中一樣。 – 2013-03-06 23:25:01

1

好了,你要好好上下文考慮。所以首先你想沒有\,然後你想()

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

但你可以把兩者paranthesis字符類

[^\\][\)\(] 
相關問題