Php 复杂(?)正则表达式
在过去的几天里一直在尝试各种各样的正则表达式,没有乐趣 尝试对非常有限的html标记子集(特别是img标记)进行一些正则表达式修改,但仅限于以下内容:Php 复杂(?)正则表达式,php,html,regex,Php,Html,Regex,在过去的几天里一直在尝试各种各样的正则表达式,没有乐趣 尝试对非常有限的html标记子集(特别是img标记)进行一些正则表达式修改,但仅限于以下内容: <img src="picture.jpg"> <img src="site.com/picture.jpg"> 而不是像这样的: <img src="picture.jpg"> <img src="site.com/picture.jpg"> 此外,这些标记与它们前后的其他文本混合
<img src="picture.jpg">
<img src="site.com/picture.jpg">
而不是像这样的:
<img src="picture.jpg">
<img src="site.com/picture.jpg">
此外,这些标记与它们前后的其他文本混合在一起,因此正则表达式需要忽略这些内容,但仍然可以处理标记。我一辈子都搞不懂,有人能帮忙吗?
所以,你想匹配
格式中的所有字符串,其中..
是一个不包含的子字符串“
或/
字符?您不应该为此使用正则表达式。使用简单的HTMLDOM或DomDocumentAndrea-yep。事实上,我认为斜杠是可以的(本地路径),但第二个句点不是,这表明图片是在其他地方托管的(我们在本地文件夹名称中不使用句点)。我的问题是,我想不出一种方法来说“匹配所有标记(在(最短匹配之间))中没有超过一个句点,忽略其余的”。这是regex本身可以做到的吗?谢谢,但不,我事先不知道该站点(可以是任何站点,任何扩展。我试图做你的想法,但对“任何事情,然后一个周期,然后任何事情,然后另一个周期(两个周期表示非本地路径)进行负面展望),但它只匹配所有字符。或者,如果字符之外有句点,则不匹配任何字符。
<?php
$test = '<img src="picture0.jpg"><img src="site.com/picture1.jpg">';
preg_match_all('/<img src="(?!site.com\/)(.*?)">/',$test,$matches);
echo '<pre>',print_r($matches),'</pre>';