【发布时间】:2023-03-27 09:45:01
【问题描述】:
我对正则表达式有疑问,使用 preg_match_all() 来匹配可变长度的内容。
我想匹配的是“拥塞”这个词之后的交通状况我想出的是这个正则表达式模式:
Congestion\s*:\s*(?P<congestion>.*)
但是,它会将第一个实例一直提取到整个主题的末尾,因为 .* 会匹配所有内容。但这不是我想要的,我希望它作为 3 个实例单独匹配。
现在,由于 Congestion 后面的单词可能是可变长度的,我无法真正预测中间有多少单词和空格来提出更严格的 \w*\s*\w* 匹配等。
关于我如何从这里开始的任何线索?
Highway : Highway 26
Datetime : 18-Oct-2010 05:18 PM
Congestion : Traffic is slow from Smith St to Alice Springs St
Highway : Princes Highway
Datetime : 18-Oct-2010 05:18 PM
Congestion : Traffic is slow at the Flinders St / Elizabeth St intersection
Highway : Eastern Freeway
Datetime : 18-Oct-2010 05:19 PM
Congestion : Traffic is slow from Prince St to Queen St
为清晰而编辑
这些格式很好的文本实际上是通过格式很差的 html 电子邮件收到的。它在这里和那里包含随机换行符,例如“拥堵:交通\n 从 Prince\nSt 到 Queen St 很慢”。
所以在处理邮件时,我去掉了所有的 html 代码和随机换行符,然后 json_encode() 将它们变成一个很长的单行字符串,没有换行符......
【问题讨论】:
-
我很困惑 - 你能显示你想要的输出/匹配吗?
-
我想提取'Congestions:'后面的词,即每条高速公路的交通状况。
标签: php regex preg-match-all