Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式可选字符_Php_Regex - Fatal编程技术网

Php 正则表达式可选字符

Php 正则表达式可选字符,php,regex,Php,Regex,3个字符串(这里是HTML代码,请不要说使用HTML解析器,我必须使用正则表达式): 但它得到的只是 怎么了?您需要圆括号,而不是方括号。方括号表示字符类,它与括号中的字符中的任何单个字符相匹配。你也不想看到/div>和之间的点,为什么不试试呢 <\/div><img src="http:\/\/www.example.com\/.*?\/> 失败的原因是使用方括号[]定义匹配字符的列表,然后告诉正则表达式将这些字符中的任何一个匹配一次或多次(+)。由于不包括i和n

3个字符串(这里是HTML代码,请不要说使用HTML解析器,我必须使用正则表达式):

但它得到的只是


怎么了?

您需要圆括号,而不是方括号。方括号表示字符类,它与括号中的字符中的任何单个字符相匹配。你也不想看到
/div>
之间的点,为什么不试试呢

<\/div><img src="http:\/\/www.example.com\/.*?\/>

失败的原因是使用方括号
[]
定义匹配字符的列表,然后告诉正则表达式将这些字符中的任何一个匹配一次或多次(
+
)。由于不包括
i
n
,因此匹配分别在
internet.gif
nano.png
的开头停止。

与regex模式一起使用

/^<\/div>(<img src="http:\/{2}www.example.com[^>]*>)?$/m
/(^<\/div>(<img src="http:\/{2}www.example.com[^>]*>)?$(?:\n?|\Z))+/m
/^(]*>)?$/m
或者与正则表达式模式一起使用

/^<\/div>(<img src="http:\/{2}www.example.com[^>]*>)?$/m
/(^<\/div>(<img src="http:\/{2}www.example.com[^>]*>)?$(?:\n?|\Z))+/m
/(^(]*>)?$(?:\n?|\Z))+/m
/((?:]*?>)/m

还可以使用preg_match_all来查找不只是一个匹配项,而是所有匹配项。

我假设您使用的是PHP,正如您提到的
preg_match
,是什么要求使用正则表达式?@zzzzBov:是的,我必须编辑一些文件,并删除这些字符串。因此,我使用
preg\uu
函数。为什么必须使用正则表达式?是什么限制了您?因为
标记是可选的。在第三个字符串中,我没有。
/(<\/div>(?:<img\w*src="http:\/\/www\.example\.com\/[^"]+?"[^>]*?>)?)/m