我想仅使用正则表达式提取字符串的某些元素,并且我想只以捕获的组结束。如何只替换正则表达式的捕获元素?
例如,我想对像"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