我一直在使用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}”。
我希望你能帮助我。
致以最诚挚的问候,
埃俄利斯
答案 0 :(得分:1)
感谢 stribizhev 进行更正以及指向&#34; regex101.com&#34;的链接(非常好的帮助来源)。是的,我的问题的一个解决方案是模式:(?<!\\)\{(?<!\\)\{(.*)(?<!\\)\}(?<!\\)\}
谢谢大家!
致以最诚挚的问候,
埃俄利斯