如何使用正则表达式使点匹配换行符
我有一个字符串,在和之间包含普通字符,白色字符集和换行符。此正则表达式不起作用:/<div>(.*)<\/div>
。这是因为.*
与换行符不匹配。我的问题是,该怎么做?
回答:
您需要使用DOTALL修饰符。
'/<div>(.*)<\/div>/s'
这可能无法完全满足您的需求,因为您的贪婪匹配。您可以改为尝试非贪婪匹配:
'/<div>(.*?)<\/div>/s'
如果没有其他标签,您也可以通过匹配除“ <”以外的所有内容来解决此问题:
'/<div>([^<]*)<\/div>/'
另一个观察结果是,您不需要将其/
用作正则表达式定界符。使用另一个字符意味着您不必逃避/
in
</div>
,从而提高了可读性。这适用于所有上述正则表达式。如果您使用’#’而不是’/’,将显示以下内容:
'#<div>([^<]*)</div>#'
但是,由于嵌套的div,多余的空格,HTML注释和其他各种原因,所有这些解决方案都可能失败。HTML太复杂,无法使用Regex解析,因此您应该考虑使用HTML解析器。
以上是 如何使用正则表达式使点匹配换行符 的全部内容, 来源链接: utcz.com/qa/405449.html