我正在尝试创建一个正则表达式来解析包含$ {anything}
形式的占位符的字符串这很容易,使用这样的东西,我可以提取2美元: (\ $ {(。*?)})
例如,当我想要占位符时,困难就出现了 如果primary_region =“americas”,而americas1 = unix-am-host1,那么我想要 $ {$ {primary_region} 1}解析为$ {americas} 1作为中间人,然后最终解析为unix-am-host1
当我应用上面的正则表达式时,$ 2会产生“$ {region”而不仅仅是“region” 所以我需要一个正则表达式,当应用于$ {$ {primary_region} 1}将提取primary_region,然后当我将它应用于$ {americas1}时,它将提取americas1
答案 0 :(得分:1)
如果您的标识符只包含单词字符(根据它们的示例判断),请使用\w+
(与1个或多个[a-zA-Z0-9_]
字符匹配):
(\$\{(\w+)\})
^^^
请参阅regex demo
如果除了{
和}
之外还有其他任何字符,您可以使用[^{}]
否定的字符类:
(\$\{([^{}]+)\})
答案 1 :(得分:1)
最好的选择是每次从内到外重新匹配。
每次替换内容\$\{([^{}]+)\}
将$1
作为关键字替换散列值。