Regex 用于解析xaml绑定语法的正则表达式

Regex 用于解析xaml绑定语法的正则表达式,regex,Regex,和往常一样,正则表达式让我头疼 我想解析以下字符串(作为示例): Client: {Path=ClientName}, Balance: {Path=Balance, StringFormat='{0:0.00}'} Client: {Path=ClientName}, Balance: {Path=Balance, StringFormat='Your balance is {0:0.00}.'} 我正在寻找一个正则表达式(或任何其他方法),它可以按如下方式拆分字符串,然后获得每个字符串的单

和往常一样,正则表达式让我头疼

我想解析以下字符串(作为示例):

Client: {Path=ClientName}, Balance: {Path=Balance, StringFormat='{0:0.00}'}
Client: {Path=ClientName}, Balance: {Path=Balance, StringFormat='Your balance is {0:0.00}.'}
我正在寻找一个正则表达式(或任何其他方法),它可以按如下方式拆分字符串,然后获得每个字符串的单个键/值。(想法是将其中的每一个解析为XAML绑定)

目前,我有下面的正则表达式来分割字符串,但是由于值中的“}”而被StringFormat的值搞混了

(?<!'){(.+?)}(?!')
(?
你知道我怎样才能做到这一点吗


谢谢!

一次又一次地解决同一个问题真的很累,但现在你要做的是:

从技术上讲,你做错了,你应该使用解析器,正则表达式不是用来处理嵌套匹配括号的,诸如此类。我们可以一起破解这个,为什么不呢

/(?<!'){([^'}]|'[^']+')+}(?!')/
/(?
它的核心是寻找两样东西:a)任何不是
}
字符(
[^'}]
)的东西,以及b)任何看起来像字符串的东西(
'[^']+'
)。它假定一个字符串是一个引号、一堆非引号文本和另一个引号。举个例子,这应该行得通

但是,它将无法匹配
“这是一个带有引号的字符串”
,因为它不是为转义引号而设计的。添加这一点很简单,涉及到应用我们刚才应用的原则,所以我将把它留给您来确定是否可以。你似乎对正则表达式很在行,至少在你问它之前你已经开始了,所以我认为你可以找出如何使它在字符串中匹配
\'


编辑:您使用的是
s而不是
s。对此很抱歉。

正如经常发生的那样,regex并不是这项工作的最佳工具。有什么理由必须用regex来做吗?老实说,我只是假设可以用regex来做,只是我对这个话题的无知。我真的愿意接受任何建议!它可以用正则表达式完成,但这是懒惰的黑客解决方案。有更好的工具来完成这项工作,但是正则表达式对于大多数目的来说可能“足够好”,没问题。不过,我建议您阅读一些正则表达式的理论局限性。正则表达式可以匹配带引号的字符串(即“\”),但不能匹配带括号的括号(即{{}})。如果要解析的文本变得更加复杂(特别是沿着嵌套括号的行),那么应该找到另一种解决方案。现代正则表达式可以做到这一点,但它很粗糙,而且不必要地难以正确写入/读取/维护/升级。
/(?<!'){([^'}]|'[^']+')+}(?!')/