正则表达式匹配替换第n次出现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式匹配替换第n次出现相关的知识,希望对你有一定的参考价值。

<p>你好吗,你好吗,你好吗。你好吗你好吗,你好吗,你好吗。你好吗你好吗,你好吗,你好吗。你好吗你好吗,你好吗,你好吗。你好吗你好吗,你好吗,你好吗。</p>
<p>我很好。我很好,我很好,我很好。你好吗你好吗,你好吗,你好吗。你好吗你好吗,你好吗,你好吗。你好吗你好吗,你好吗,你好吗。<p>
用正则表达式匹配出每个<p></p>里面的第三个。(句号)然后替换成169号

正则表达式匹配替换第n次出现:
_name=(?:[^"]*")n 这里就是匹配第n次出现。

举例:

$string = \'_name=foo"bar"test" more text"\';
// This pattern will not include the last " (note the 2, not 3)
$pattern = \'/_name=((.*?")2.*?)"/\';
preg_match($pattern, $string, $m);
echo $m[1];
参考技术A // php code
$source = '<p>你好吗,你好吗,你好吗。你好吗你好吗,你好吗,你好吗。你好吗你好吗,你好吗,你好吗。你好吗你好吗,你好吗,你好吗。你好吗你好吗,你好吗,你好吗。</p>
<p>我很好。我很好,我很好,我很好。你好吗你好吗,你好吗,你好吗。你好吗你好吗,你好吗,你好吗。你好吗你好吗,你好吗,你好吗。</p>';
$source = preg_replace('/(<p>(?:.*?。)2.*?)。(.*?<\\/p>)/s','$1(169号)$2',$source);
echo $source;

追问

    大师,有没有QQ啊,太牛了。

本回答被提问者采纳

正则表达式匹配多个字符

*      匹配前一个字符出现0次或者无限次

+     匹配前一个字符出现1次或者无限次

?   匹配前一个字符出现0次或者1次

{m}    匹配前一个字符出现m次

{m,n}  匹配前一个字符出现从m次到n次

以上是关于正则表达式匹配替换第n次出现的主要内容,如果未能解决你的问题,请参考以下文章

sed / awk 匹配文件中第二次出现的正则表达式,并替换整行

正则表达式

如果出现多于 n 次,则 JavaScript 正则表达式替换

正则表达式字符匹配

正则表达式以啥结尾

awk one-liner 仅替换第一个匹配的正则表达式出现的文本