說,我有一個包含以下字符串的行:爲什麼我的非貪婪Perl正則表達式仍然匹配太多?
"$tom" said blah blah blash. "$dick" said "blah blah blah". "$harry" said blah blah blah.
,我想提取
"$dick" said "blah blah blah"
我有以下代碼:
my ($term) = /(".+?" said ".+?")/g;
print $term;
但它給我超過我需要:
"$tom" said blah blah blash. "$dick" said "blah blah blah"
我試圖通過使用非捕獲括號分組我的圖案作爲一個整體:
my ($term) = /((?:".+?" said ".+?"))/g;
但問題仍然存在。
我已經重讀了學習Perl的Nongreedy Quantifiers部分,但它到目前爲止讓我無處可尋。
感謝您的任何指導,你可以慷慨地提供:)
第一「等等等等blash」不加引號,所以你的正則表達式被抓住了第二盤。 – Ether 2009-10-25 22:49:43
@其他,我的問題是:我認爲Perl可以將我的模式視爲一個整體。但是我錯了。對我而言,事情變得越來越清楚,即Perl總是試圖匹配第一個子模式,然後再匹配下一個子模式。似乎沒有「同步整體模式匹配」這樣的事情。 – Mike 2009-10-26 02:40:28
@brian,謝謝。我喜歡你改寫我的問題的方式:) – Mike 2009-10-26 02:43:47