Regex-删除所有与模式不匹配的行


Regex - delete all lines which does not match pattern

我有一个以下字符串(带有换行符):

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

我需要匹配2和3并替换它,但我有一个结果:

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

但我需要的只是替补,没有什么。有3000个这样的字符串,所以我自己删除它会花费很多时间。你知道吗?

您可以使用preg_filter函数一次完成过滤和替换:

$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>