【发布时间】:2017-06-08 02:51:42
【问题描述】:
我有两种模式,如下:
- 第一类:
${<varName>} - 类型二:
$${<varName>}
这些模式可以单独找到,也可以在一个字符串中包含多个匹配项。我需要找到这些模式的出现,所以我写了一个查询来通过匹配正则表达式进行搜索。然而,问题在于,对于任何类型 II 模式,它们本身都包含与类型 I 模式的匹配项。例如,$${newVar} 将被检测为两次$${newVar} 和${newVar}。我只希望前者被退回。我使用的正则表达式是:
- 第一类:
\$\{[a-zA-Z0-9]+\} - 二类:
\$\$\{[a-zA-Z0-9]+\}
可以查看检测到的字符串here的示例(下)
请注意,第二次检测是正确的,而第一次检测是不需要的。
还有没有修改这些正则表达式来满足我的需要?或者有其他选择吗?请随时提出建议。欢迎大家回答!!谢谢大家。
【问题讨论】:
-
你的Type II不应该是
\$\$\{[a-zA-Z0-9]+\}吗?对于 I 类,你不能有[^\$]\$\{[a-zA-Z0-9]+\}吗? -
为错字道歉,它是
\$\$。对于您建议的正则表达式,我已经尝试过了,它会匹配模式前面的任何字符,例如fasdfasd'f${var}'('表示匹配) -
你说得对,我忘了它会包含在捕获中。它可能需要一个前瞻性,但我对那些提供解决方案的人不够好。