正则表达式替换包含文本的那

时间:2018-07-22 00:02:27

标签: php regex preg-match

我正在编写一个快速的php脚本,并且面临以下问题。

我需要通过一个html代码,找到以下“行类型”

<p>2:45 text goes here</p>

其中2:45是时间戳记,文本在此处是可变文本,并将其替换为

<li>same timestamp same text goes here</li>

因为html中有许多<p>,所以不能进行str替换,这就是我要寻找正则表达式模式的原因。

我还注意到我还有另一个可能的匹配项:

<p>43:41 - text goes here</p>

只要我可以将开头的p更改为li并删除将成为我一天的破折号即可。

我对regex相当不满意,所以我实在无法绕开它,因此我们非常感谢您的帮助。

干杯!

1 个答案:

答案 0 :(得分:1)

匹配

<p>(\d+:\d+ ((?!<\/p>).)+)<\/p>

换句话说,在<p>之后加上时间戳,最终以</p>结尾,将<p>内的整个文本捕获到一个组中,并用{ {1}}:

<li>

https://regex101.com/r/sC8RfZ/1

<li>$1</li>