如何使用正则表达式使点匹配换行符
我有一个字符串,其中包含<div>和< / div>之间的普通字符,白色字符集和换行符。
此正则表达式不起作用:.这是因为与换行符不匹配。我该怎么做?/<div>(.*)<\/div>
.*
我有一个字符串,其中包含<div>和< / div>之间的普通字符,白色字符集和换行符。
此正则表达式不起作用:.这是因为与换行符不匹配。我该怎么做?/<div>(.*)<\/div>
.*
您需要使用 DOTALL 修饰符 ()。/s
'/<div>(.*)<\/div>/s'
这可能不会给你你想要的,因为你是贪婪的匹配。相反,您可以尝试不贪婪的匹配:
'/<div>(.*?)<\/div>/s'
如果没有其他标签,您也可以通过匹配除“<”之外的所有内容来解决此问题:
'/<div>([^<]*)<\/div>/'
另一个观察结果是,您不需要用作正则表达式分隔符。使用另一个字符意味着您不必转义 in,从而提高可读性。这适用于上述所有正则表达式。下面是如果您使用“#”而不是“/”,它看起来会是什么样子:/
/
</div>
'#<div>([^<]*)</div>#'
但是,由于嵌套的div,额外的空格,HTML注释和各种其他原因,所有这些解决方案都可能失败。HTML太复杂,无法使用正则表达式进行解析,因此您应该考虑改用HTML解析器。
要匹配所有字符,您可以使用以下技巧:
%\<div\>([\s\S]*)\</div\>%