我有一个正则表达式的问题,使用 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() 转换为一个非常长的单行字符串,没有换行符......