2012-07-23 82 views
1

我有一個像test{0:##}test2{Order:C}test3文本。我需要使用正則表達式,並找到文本testtest2test3這不是{...}內。如何找到不包含內內的文本括號

對於花括號內的文字{0:##}我用

@"{0:(.*?)}" 

但是,試圖對文本不花括號內,面臨一些困難。

回答

1

代替括號以外一切匹配(喬伊所建議)時,它可能會更容易通過,只有匹配的括號表達式將字符串分割成一個陣列,的。

result = Regex.Split(teststring, "\{[^}]*\}"); 
2

如果沒有嵌套的大括號,你可以使用類似以下內容:

(?<=^|})[^{]+(?={|$) 

這將使用回顧後和前瞻找到嵌入}...{片段或通過在一個結束的字符串的開始或結束分隔。

快速PowerShell的測試:

PS> [regex]::Matches('test{0:##}test2{Order:C}test3', '(?<=^|})[^{}]+(?={|$)') | select Value 

Value 
----- 
test 
test2 
test3 
0

如果文本始終是相同的格式你爲什麼不使用Split功能?

相關問題