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