我有一个像这样的字符串
<div><span style="">toto</span> some character <span>toto2</span></div>
我的正则表达式:
/(<span .*>)(.*)(<\/span>)/
我使用preg_match并返回整个字符串
<span style="">toto</span> some character <span>toto2</span>
我希望它返回:
<span style="">toto</span>
and
<span>toto2</span>
我需要做些什么才能实现这一目标?感谢。
答案 0 :(得分:6)
这个怎么样:
/(<span[^>]*>)(.*?)(<\/span>)/
查看PHP preg_match Repetition上的文档:
默认情况下,量词是“贪婪的”,也就是说,它们尽可能匹配
和
但是,如果量词后跟一个问号,那么它会变得懒惰,而是匹配可能的最小次数
答案 1 :(得分:1)
即使我猜所有以前的答案都是正确的,我只想添加它,因为你只想捕获整个表达式(即从中),你不必用()
捕获正则表达式中的eveything
以下是您所期望的而不捕获其他表达式
/(<span\w*[^>]*>[^<]*<\/span>)/
(在http://rubular.com/上测试)
编辑:当然PHP和ruby regexp实现之间可能存在一些差异,但想法是一样的:)