0

我想匹配以表达式开头"${"和结尾"}"的表达式${foo} and ${bar}

当然,正则表达式.*\$\{.+\}.*匹配整个表达式。

我的理解是更改为不情愿的量词可以解决问题,但我发现它.*\$\{.+?\}.*也匹配整个表达式。

我错过了什么?

4

3 回答 3

3

除了 1800 INFORMATION 的建议之外,我会将点更改为其他内容:

\$\{[^\}]+\}

因为即使字符串中有两次出现,+也会尽可能多地匹配。}${}

于 2009-09-10T09:47:10.870 回答
2

我将首先删除.*表达式开头和结尾的 —— 这可能是匹配所有内容的。如果您尝试这样做,它会起作用吗?

\$\{.+\}
于 2009-09-10T09:43:19.477 回答
0

“+”量词是贪婪的,所以它尽可能匹配,而+?,匹配刚好。

例如,对于“${foo} something ${bar}”

".+" --> match = "${foo} something ${bar}" ".+?" --> 匹配 = "${foo}" 和 "${bar}"。您将不得不迭代以获取所有匹配项。

http://www.regular-expressions.info/repeat.html

于 2009-09-10T09:51:42.477 回答