我想僅使用正則表達式提取字符串的某些元素,並且我想只以捕獲的組結束。如何只替換正則表達式的捕獲元素?
例如,我想對像"This is a test"
這樣的字符串運行諸如(is|a)
的東西,並且只能返回"is is a"
。我可以部分做到這一點,現在唯一的辦法是,如果我找到字符串的整個開頭和結尾,但不抓住它:
.*?(is|a).*? replaced with $1
然而,當我這樣做,只是之前的最後的文字中發現/被俘的羣體被淘汰 - 在最後找到的羣體之後的一切都依然存在
is is a test.
我如何可以隔離並替換僅僅根據所捕捉的字符串(這樣我結束了"is is a"
),在這兩個PHP和Perl?
謝謝!
編輯: 我現在看到它是更好地使用m//
而非s///
,但我怎麼可以應用到PHP的preg_match
?在我真正的正則表達式中,我有幾個捕獲組,導致$1
,$2
, $3
等 - preg_match
只處理一個捕獲組,對吧?
工作! preg_match_all是關鍵。謝謝! – Andrew 2009-06-23 09:02:53