正则表达式 - 在双花括号之间获取文本并避免使用转义的大括号

时间:2015-03-22 18:51:56

标签: regex variables autoit between curly-brackets

我一直在使用AutoIt程序,该程序应该接收声明为.ini文件的变量。之后,可以使用双花括号“{{}}”和单个花括号“{}”调用这些变量。这是一个例子。

Variable is defined by user as: VAR1 = "C:\MyDir\"
When user calls {{VAR1}} it receives "C:\\MyDir\\"
When user calls {VAR1} it receives "C:\MyDir\"

双花括号替换“\”代替“\\”;单个花括号仅给出实际变量值。

问题是:

1)用户可以在变量定义中使用大括号: {VAR1} =“C:\ MyDir \”或{{VAR1}} =“C:\ MyDir \”...

2)用户可以使用大括号编写文本并在文本中调用变量:

我的示例文字{{{VAR1}}}我的示例文字。

用户使用第二个{{VAR1}}大括号调用{VAR1}变量,并希望结果显示在第三个大括号内。

用户期望:“我的示例文本{C:\ MyDir}我的示例文本。”

为了避免这种花括号递归的潜在问题,我想定义一个规则,当用户想要编写一个真正的花括号和一个非转义的花括号时,使用转义的花括号“{”当用户调用变量时

根据前面的解释,我需要一个能够解析以下例子的正则表达式:

\{{{\{VAR1\}}}\}

必须忽略转义的大括号,函数应返回\ {VAR1 \}作为变量名。在这种情况下,变量“real”名称为“{VAR1}”。

我希望你能帮助我。

致以最诚挚的问候,

埃俄利斯

1 个答案:

答案 0 :(得分:1)

感谢 stribizhev 进行更正以及指向&#34; regex101.com&#34;的链接(非常好的帮助来源)。是的,我的问题的一个解决方案是模式:(?<!\\)\{(?<!\\)\{(.*)(?<!\\)\}(?<!\\)\}

谢谢大家!

致以最诚挚的问候,

埃俄利斯