正则表达式 - 删除所有与模式不匹配的行

时间:2014-09-18 06:16:24

标签: php regex string

我有一个跟随字符串(带换行符):

<a>something1</a>
<a>something2</a>
<a>something3</a>

我需要匹配something2和something3并替换它,但后来我得到了结果:

<a>something1</a>
<a>replacement2</a>
<a>replacement3</a>

但我只需要替换,没有东西1。有3000个这样的字符串,所以自己删除它会花费很多时间。你有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用 preg_filter function 一次性进行过滤和替换:

$s = <<< EOF
<a>something1</a>
<a>something2</a>
<a>something3</a>
EOF;

$subject = explode("\n", $s); 
echo implode("\n", preg_filter('~\bsomething([02-9])\b~', 'replacement$1', $subject)); 

输出:

<a>replacement2</a>
<a>replacement3</a>