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