我有一个像test{0:##}test2{Order:C}test3
文本。我需要使用正则表达式,并找到文本test
,test2
,test3
这不是{...}
内。如何找到不包含内内的文本括号
对于花括号内的文字{0:##}我用
@"{0:(.*?)}"
但是,试图对文本不花括号内,面临一些困难。
我有一个像test{0:##}test2{Order:C}test3
文本。我需要使用正则表达式,并找到文本test
,test2
,test3
这不是{...}
内。如何找到不包含内内的文本括号
对于花括号内的文字{0:##}我用
@"{0:(.*?)}"
但是,试图对文本不花括号内,面临一些困难。
代替括号以外一切匹配(乔伊所建议)时,它可能会更容易通过,只有匹配的括号表达式将字符串分割成一个阵列,的。
result = Regex.Split(teststring, "\{[^}]*\}");
如果没有嵌套的大括号,你可以使用类似以下内容:
(?<=^|})[^{]+(?={|$)
这将使用回顾后和前瞻找到嵌入}...{
片段或通过在一个结束的字符串的开始或结束分隔。
快速PowerShell的测试:
PS> [regex]::Matches('test{0:##}test2{Order:C}test3', '(?<=^|})[^{}]+(?={|$)') | select Value
Value
-----
test
test2
test3
如果文本始终是相同的格式你为什么不使用Split
功能?