我想匹配表達式,該表達式以"${"
開頭,"}"
結尾的表達式爲${foo} and ${bar}
。關於正則表達式的疑問
正則表達式.*\$\{.+\}.*
當然匹配整個表達式。
我的理解是,更改爲不情願的量詞可以解決問題,但我發現.*\$\{.+?\}.*
也匹配整個表達式。
我錯過了什麼?
我想匹配表達式,該表達式以"${"
開頭,"}"
結尾的表達式爲${foo} and ${bar}
。關於正則表達式的疑問
正則表達式.*\$\{.+\}.*
當然匹配整個表達式。
我的理解是,更改爲不情願的量詞可以解決問題,但我發現.*\$\{.+?\}.*
也匹配整個表達式。
我錯過了什麼?
除了到1800年信息,我會點更改爲其他內容的建議:
\$\{[^\}]+\}
由於+
將匹配一樣,因爲它甚至可以在}
如果你有兩個occurances ${}
在字符串中。
我會從開始和結束時刪除.*
開始 - 這可能是匹配所有內容。如果你試試這個,它會起作用嗎?
\$\{.+\}
「+」量詞是貪婪的,所以它匹配儘可能多,而+?,恰好匹配。
例如,對於 「$ {} foo的東西$ {}吧」
「+」 - >匹配= 「$ {} foo的東西$ {}吧」 「+?」 - > match =「$ {foo}」和「$ {bar}」。你將不得不迭代來獲得所有的匹配。
這就是我以前的理解。我的困惑是爲什麼「。+?」儘可能少地匹配。 – 2009-09-10 12:42:09
rememebr是potenetially。*匹配空字符串,你可以在任何地方找到一個空字符串:)(這完全取決於無正則表達式引擎使用) – Pod 2009-09-10 11:07:55