Php 多行正则表达式-如何匹配句子?
我需要从以下文本中提取状态的帮助:Php 多行正则表达式-如何匹配句子?,php,regex,Php,Regex,我需要从以下文本中提取状态的帮助: <br> From: Florida <br> <br> New York, Texas, California<br> 10% Delay chance <br> 发件人:佛罗里达 纽约、德克萨斯、加利福尼亚 10%的延迟机会 这只是一个较大文档的一部分,因此可能会出现其他出现的,因此我不能依赖它
<br>
From: Florida
<br>
<br>
New York, Texas, California<br>
10% Delay chance
<br>
发件人:佛罗里达
纽约、德克萨斯、加利福尼亚
10%的延迟机会
这只是一个较大文档的一部分,因此可能会出现其他出现的
,因此我不能依赖它们的计数。但是,以下模式仅出现1次:From:.++
++
++(.++).+%延迟概率
。使用PHP:
$pattern = "/.+From:.+<br>.+<br>.+(.+).+% Delay chance<br>/ism";
$pattern=“/.+From:.+
+
+(.+).+%延迟概率
/ism”;
由于除了(并非真正有用的)注释之外,没有人提供解决方案来避免解析HTML,因此我最后想到了以下几点:
$string = preg_replace ( "/\s+/" , " " , $string );
preg_match("!(?:.*?\K<br>){3}(?P<states>.*?)<br>!", $string, $match);
$string=preg\u replace(“/\s+/”,“”,$string);
preg_match(“!(?:.*\K
){3}(?P.*?
!”,$string,$match);
$match['states']
将包含这些状态。什么语言/引擎?这个问题似乎离题了,因为它是关于要求社区充当OP的个人正则表达式生成器。使用类似于/from:(?:.*
){2}\s的内容*([^@freefiller,这没有帮助。规则1:不要使用正则表达式来解析HTML。规则2:如果仍然要使用正则表达式解析HTML,请参阅规则1