多次匹配正则表达式模式
Posted
技术标签:
【中文标题】多次匹配正则表达式模式【英文标题】:Match regex pattern multiple times 【发布时间】:2020-10-10 23:47:59 【问题描述】:我正在尝试编写一个匹配给定模式的正则表达式 2 到无限次。实际上,我只是想将多个换行符合并为一个,如果有的话。
示例输入:
<br><br>
<br>
ABC
<br>
<br>
预期输出:
<br>
ABC
<br>
如果在上述输出上运行正则表达式,那么我希望看到完全相同的输出。
<br>
标签之间可以有任意数量的空格。
我尝试过的:
$html = preg_replace('/(?:<br>\s?)2,/s', null, $html);
【问题讨论】:
如果您不必费心处理 Windows 创建的文件(使用行终止符\r\n
),请考虑将匹配的 /\n2,/
替换为 \n
或 /\n(?=\n)/
用空字符串 (都设置了多行标志)。
【参考方案1】:
只需查找 <br>
后跟可选空格字符 2 次或更多次,然后替换为 <br>
:
$html = preg_replace('/(<br>\s*)2,/', '<br>', $html);
如果需要,您可以替换为 "<br>\n"
。
【讨论】:
以上是关于多次匹配正则表达式模式的主要内容,如果未能解决你的问题,请参考以下文章