我希望匹配表达式"${"
中以"}"
开头并以${foo} and ${bar}
结尾的表达式。
当然,正则表达式.*\$\{.+\}.*
匹配整个表达式。
我的理解是,改变不情愿的量词会解决问题,但我发现.*\$\{.+?\}.*
也匹配整个表达式。
我错过了什么?
答案 0 :(得分:3)
除了1800 INFORMATION的建议,我还会将点改为其他内容:
\$\{[^\}]+\}
如果您在字符串中出现两次+
,则}
将与${}
匹配。
答案 1 :(得分:2)
我首先要删除表达式开头和结尾的.*
- 这可能是匹配所有内容的。如果您尝试这样做有效吗?
\$\{.+\}
答案 2 :(得分:0)
“+”量词是贪婪的,所以它尽可能匹配,而+?匹配就足够了。
例如,对于“$ {foo} something $ {bar}”
“。+” - > match =“$ {foo} something $ {bar}” “+?” - > match =“$ {foo}”和“$ {bar}”。您将不得不迭代以获得所有匹配。