是否有一些解决方案,如何将该字符串解析为3个部分?
{ROW.{TABLE.{TEMP.lang}}}
对此
{ROW.{TABLE.{TEMP.lang}}}
{TABLE.{TEMP.lang}
{TEMP.lang}
例如,当我尝试替换TABLE时。变量
{TABLE\.(.+)} = 1 => {TABLE.{TEMP.lang}}} 2 => {TEMP.lang}}
{TABLE\.(.+?)} = 1 => {TABLE.{TEMP.lang} 2 => {TEMP.lang
谢谢。
答案 0 :(得分:0)
您要尝试的是递归匹配。正如我已经在评论中指出的那样,对于here和here(如果适用)来说,类似的问题答案也可能对您有用。
针对您的情况,我针对您的情况改编了this answer,从而生成了以下RegEx:
(?=(\{(?>[^{}]+|(?1))+\}))
我用大括号代替了(上一个解决方案的)括号,然后将整个捕获组括起来为正向。自lookarounds don't consume any characters起,引擎将继续尝试匹配字符串。另外,如果您在捕获组内部的前瞻中包含断言,则表达式将“匹配”(但不使用),并且您可以从捕获组中检索它。这样,可以多次匹配您的模式,从而为您提供预期的结果。
Regex101演示:https://regex101.com/r/nsypuX/1/