2015-12-15 344 views
2

我一直在旋轉我的車輪試圖找出這一點。我需要在一組括號內替換雙引號。我下面的例子顯示了單引號,但我仍然有問題VB.Net正則表達式替換括號內的雙引號

這對我的作品 -

Dim input As String = "This is my ['Test'] that works" 
Dim output As String = Regex.Replace(input, "(?<=my.*)'(?=.*that)", "?") 

生成此字符串 - This is my [?Test?] that works

但如果我試試這個是附加的,而不是替換單引號 -

Dim input As String = "This is my ['Test'] that works" 
Dim output As String = Regex.Replace(input, "(?<=[.*)'(?=.*])", "?") 

可生產這是不是我想要的 - This is my ['?Test'?] that works

正如你可以看到Regex.replace被追加?在單引號之後,但我需要它用?替換單引號。我很難過。

+0

「我很爲難」 - *我也是*。 –

+0

Escape'['。 '(?<= \ [。*)'(?=。*])''。*'過於貪婪,可能會因較大的文本輸入而過火。 –

回答

1

要匹配方括號內的所有單引號,你需要躲避開[或將作爲一個特殊字符進行處理(打開字符類):

(?<=\[[^][]*)'(?=[^][]*]) 

此外,您還需要限制字符與[]不同。爲此,您可以使用一個[^][]取反的字符類(這將匹配除[]以外的任何字符)。

regex demo

enter image description here

+0

所以我添加了一個像stribizhev建議的轉義字符,並解決了我的問題。 Dim input As String =「This is my ['Test'] that works」 Dim output As String = Regex.Replace(input,「(?<= \ [。*)'(?=。*])」,「 ?「)但現在我意識到我有一個更大的問題。我可能有兩組括號。所以我的字符串是 - MyObject:「[」A「,」B「]」,「MyObject2」:「[」C「]」所以我需要刪除方括號內的雙引號。所以它看起來像MyObject:「[A,B]」,「MyObject2」:[C]「 – Dwight

+0

Look [here](http://regexstorm.net/tester?p=(%3f%3c%3d%5c %5B%5B%5E%5D%5B%5D *)%22(%3F%3D%5B%5E%5D%5B%5D *%5D)I =爲MyObject%3A%22%圖5b%22A%22%2C %22B%22%圖5d%22%2C%22MyObject2%22%3A%22%圖5b%22C%22%圖5d%22&R =),只有方括號內的雙引號被除去。 –

+1

謝謝stribizhev !!!!! !這個伎倆! – Dwight