php - 如何使用正则表达式使点匹配换行符

标签 php regex

我有一个在

之间包含普通字符、白色字符集和换行符的字符串。

这个正则表达式不起作用:/<div>(.*)<\/div> .这是因为.*不匹配换行符。我该怎么做?

最佳答案

您需要使用 DOTALL修饰符( /s )。

'/<div>(.*)<\/div>/s'

这可能不会给你你想要的,因为你是贪婪的匹配。您可以改为尝试非贪婪匹配:

'/<div>(.*?)<\/div>/s'

如果没有其他标签,您也可以通过匹配除“<”以外的所有内容来解决此问题:

'/<div>([^<]*)<\/div>/'

另一个观察结果是您不需要使用 /作为您的正则表达式分隔符。使用另一个字符意味着您不必转义 /</div> ,提高可读性。这适用于所有上述正则表达式。如果您使用“#”而不是“/”,它会是这样的:

'#<div>([^<]*)</div>#'

然而,由于嵌套的 div、额外的空格、HTML 注释和各种其他问题,所有这些解决方案都可能失败。 HTML 过于复杂,无法使用 Regex 进行解析,因此您应该考虑改用 HTML 解析器。

关于php - 如何使用正则表达式使点匹配换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1985941/

相关文章:

php - 从 ID 不在另一个查询中的房间中选择 ID +(日期比较)

javascript - 无法使用 JavaScript 选择 JSON 解析数组中的特定元素

php - MYSQL DB 到文本文件 - 图表集问题

c - 用于识别 C 中变量声明的正则表达式

regex - 如何在不使用 json 库和 json 解析器的情况下解析 json 文件

javascript - JavaScript 中的 RegExp,当量词是模式的一部分时

php - 将新订单电子邮件通知附件添加到供应商电子邮件

php - 如何将 doesObjectExist() 请求批量发送到 Amazon S3?

javascript - 使用javascript从变量中的iframe获取src宽度和高度

regex - 如何根据它们的值将目录中的所有文件夹移动到子目录?