正则表达式替换包含文本的thatgs
regex to replace thatgs containing text
我正在编写一个快速 php 脚本,但我遇到了以下问题。
我需要通过一个html代码,找到下面的"type of line"
<p>2:45 text goes here</p>
其中2:45是时间戳,这里的文字是可变文本,替换成
<li>same timestamp same text goes here</li>
无法进行 str 替换,因为 html 中有很多 <p>
,这是我寻找正则表达式模式的原因。
我还注意到我还有另一个可能的匹配项是:
<p>43:41 - text goes here</p>
只要我能把开头的 p 改成 li 并去掉破折号就可以了。
我不太擅长正则表达式,所以我真的无法理解它,所以非常感谢任何帮助。
干杯!
匹配
<p>(\d+:\d+ ((?!<\/p>).)+)<\/p>
换句话说,一个 <p>
后跟一个时间戳,最终以 </p>
结束捕获组中 <p>
内的整个文本,并替换为捕获的组一个 <li>
:
<li></li>
https://regex101.com/r/sC8RfZ/1
$str = '<p>2:45 text goes here</p>
<p>43:41 - text goes here</p>';
$str = preg_replace('/<p>(\d+:\d+ ((?!<\/p>).)+)<\/p>/','<li></li>',$str);
echo $str;
我正在编写一个快速 php 脚本,但我遇到了以下问题。
我需要通过一个html代码,找到下面的"type of line"
<p>2:45 text goes here</p>
其中2:45是时间戳,这里的文字是可变文本,替换成
<li>same timestamp same text goes here</li>
无法进行 str 替换,因为 html 中有很多 <p>
,这是我寻找正则表达式模式的原因。
我还注意到我还有另一个可能的匹配项是:
<p>43:41 - text goes here</p>
只要我能把开头的 p 改成 li 并去掉破折号就可以了。
我不太擅长正则表达式,所以我真的无法理解它,所以非常感谢任何帮助。
干杯!
匹配
<p>(\d+:\d+ ((?!<\/p>).)+)<\/p>
换句话说,一个 <p>
后跟一个时间戳,最终以 </p>
结束捕获组中 <p>
内的整个文本,并替换为捕获的组一个 <li>
:
<li></li>
https://regex101.com/r/sC8RfZ/1
$str = '<p>2:45 text goes here</p>
<p>43:41 - text goes here</p>';
$str = preg_replace('/<p>(\d+:\d+ ((?!<\/p>).)+)<\/p>/','<li></li>',$str);
echo $str;