我想匹配以表达式开头"${"
和结尾"}"
的表达式${foo} and ${bar}
。
当然,正则表达式.*\$\{.+\}.*
匹配整个表达式。
我的理解是更改为不情愿的量词可以解决问题,但我发现它.*\$\{.+?\}.*
也匹配整个表达式。
我错过了什么?
我想匹配以表达式开头"${"
和结尾"}"
的表达式${foo} and ${bar}
。
当然,正则表达式.*\$\{.+\}.*
匹配整个表达式。
我的理解是更改为不情愿的量词可以解决问题,但我发现它.*\$\{.+?\}.*
也匹配整个表达式。
我错过了什么?
除了 1800 INFORMATION 的建议之外,我会将点更改为其他内容:
\$\{[^\}]+\}
因为即使字符串中有两次出现,+
也会尽可能多地匹配。}
${}
我将首先删除.*
表达式开头和结尾的 —— 这可能是匹配所有内容的。如果您尝试这样做,它会起作用吗?
\$\{.+\}
“+”量词是贪婪的,所以它尽可能匹配,而+?,匹配刚好。
例如,对于“${foo} something ${bar}”
".+" --> match = "${foo} something ${bar}" ".+?" --> 匹配 = "${foo}" 和 "${bar}"。您将不得不迭代以获取所有匹配项。