1

我一直在使用 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\} 作为变量名。在这种情况下,变量“真实”名称是“{VAR1}”。

我希望你能帮助我。

此致,

风神

4

1 回答 1

1

感谢stribizhev的更正以及“regex101.com”的链接(非常好的帮助来源)。是的,我的问题的一种解决方案是模式:(?<!\\)\{(?<!\\)\{(.*)(?<!\\)\}(?<!\\)\}

谢谢你们!

此致,

风神

于 2015-03-23T11:31:51.363 回答