我有以下字符串(作为示例),我想解析:
Client: {Path=ClientName}, Balance: {Path=Balance, StringFormat='{0:0.00}'}
Client: {Path=ClientName}, Balance: {Path=Balance, StringFormat='Your balance is {0:0.00}.'}
我正在寻找一个正则表达式(或任何其他方法),它可以按如下方式拆分字符串,然后获取每个字符串的各个键/值。 (我们的想法是将这些中的每一个解析为XAML绑定)
String 1: {Path=ClientName}
Path = ClientName
String 2: {Path=Balance, StringFormat='{0:0.00}'}
Path = Balance
StringFormat = {0:0.00}
目前我有以下正则表达式来分割字符串,但由于值中的'}',这会被StringFormat的值搞糊涂。
(?<!'){(.+?)}(?!')
知道如何实现这个目标吗?
谢谢!
答案 0 :(得分:1)
一遍又一遍地解决同样的问题真的很累,但是你走了:
从技术上讲,你做错了,你应该使用解析器,不构建正则表达式来处理嵌套匹配括号,等等等等等等。我们可以一起破解这个,为什么不呢?
/(?<!'){([^'}]|'[^']+')+}(?!')/
那些 - {([^'}]+|'[^']+')}
- 寻找两件事:a)任何不是}
或'
字符([^'}]
)的东西,和b)任何东西看起来像一个字符串('[^']+'
)。它假设一个字符串是一个引号,一堆非引用文本和另一个引用。举个例子,这应该有效。
但是,它将无法与'This is a string with \'quotes\' in it'
匹配,因为它不是为转义引号设计的。添加这个很简单,并且涉及应用我们刚刚应用的原则,所以我会留给你来弄清楚你是否可以。你似乎对正则表达式非常好,并且在你提出这个问题之前至少已经开始这样做了,所以我认为你可以弄清楚如何使它与字符串中的\'
匹配。
编辑:您使用的是'
而不是"
。对不起。