$HTML = '
<div class="tsts">CONTENT GOES HERE 1ENDENDENDENDEND<div class="tsts">CONTENT GOES HERE 2ENDENDENDENDEND <div class="tsts">CONTENT GOES HERE 3ENDENDENDENDEND
<div class="tsts">CONTENT GOES HERE 4ENDENDENDENDEND
';
preg_match_all('%<div class="tsts">([\S\s]+)ENDENDENDENDEND%',$HTML,$matches);
我希望在比赛中找到“内容在这里1”,“内容在这里2”,“内容在这里3”,“内容在这里4”
顺便说一下我必须使用\ s \ S,因为我需要匹配所有类型的字符,包括特殊字符,新行,制表符,但我希望它在找到ENDENDENDENDEND时停止并获得其他结果
我该怎么做?因为它只停留在ENDENDENDENDEND的最后一次出现,我希望它停在它找到的第一个。所以它可以匹配其余部分。
我该怎么做?我尝试了很多,没有什么= X. 非常感谢提前。
答案 0 :(得分:0)
不,您不必使用\s\S
。 +
量词可能是这里的第二个问题。
如果你没有忘记.*?
标志,那么正常的/s
会这样做
在您的情况下,[^<>]*?
可能会更好,因为您不希望匹配标记分隔符。
答案 1 :(得分:0)
我没有php环境,但重点是快递不是吗?看到grep测试:
kent$ echo "'
<div class="tsts">CONTENT GOES HERE 1ENDENDENDENDEND<div class="tsts">CONTENT GOES HERE 2ENDENDENDENDEND <div class="tsts">CONTENT GOES HERE 3ENDENDENDENDEND
<div class="tsts">CONTENT GOES HERE 4ENDENDENDENDEND
';
"|grep -Po "(?<=<div class="tsts">)([\s\S]*?)(?=ENDENDENDENDEND)"
CONTENT GOES HERE 1
CONTENT GOES HERE 2
CONTENT GOES HERE 3
CONTENT GOES HERE 4