关于正则表达式的疑问
问题描述:
我想匹配表达式,该表达式以"${"
开头,"}"
结尾的表达式为${foo} and ${bar}
。关于正则表达式的疑问
正则表达式.*\$\{.+\}.*
当然匹配整个表达式。
我的理解是,更改为不情愿的量词可以解决问题,但我发现.*\$\{.+?\}.*
也匹配整个表达式。
我错过了什么?
答
除了到1800年信息,我会点更改为其他内容的建议:
\$\{[^\}]+\}
由于+
将匹配一样,因为它甚至可以在}
如果你有两个occurances ${}
在字符串中。
答
我会从开始和结束时删除.*
开始 - 这可能是匹配所有内容。如果你试试这个,它会起作用吗?
\$\{.+\}
答
“+”量词是贪婪的,所以它匹配尽可能多,而+?,恰好匹配。
例如,对于 “$ {} foo的东西$ {}吧”
“+” - >匹配= “$ {} foo的东西$ {}吧” “+?” - > match =“$ {foo}”和“$ {bar}”。你将不得不迭代来获得所有的匹配。
+0
这就是我以前的理解。我的困惑是为什么“。+?”尽可能少地匹配。 – 2009-09-10 12:42:09
rememebr是potenetially。*匹配空字符串,你可以在任何地方找到一个空字符串:)(这完全取决于无正则表达式引擎使用) – Pod 2009-09-10 11:07:55