preg 替换为正则表达式之间



>我正在尝试删除一段在Int.和换行符之间开始的字符串。

$string = preg_replace('/Int.[sS]+?n/', '', $string);

下面是源字符串:

My address
Int. blabla
blabla blabla

这可能吗?

您可以使用以下解决方案:

$s = "My addressnInt. blablanblabla blabla";
$s = preg_replace('~Int.h*([^rn]+)[rn]*~', '', $s);
echo $s; // => My addressnblabla blabla

查看 IDEONE 演示

正则表达式将匹配Int.,然后是零个或多个空格(h*,只是为了左修剪结果),然后将除换行符和回车符(([^rn]+))以外的一个或多个字符捕获到组中 1

若要删除字符串,只需使用以下代码:

$string = "My addressnInt. blablanblabla blabla";
$regex = '~       # delimiter
          ^Int.  # Looks for Int. at the beginning of a line
          .*      # everything else except a newline
          ~xm';   # free spacing mode and multiline
$replacement = '';
$string = preg_replace($regex, $replacement, $string);

您需要修饰符x以允许注释和m允许插入符号(^)在任何行匹配。如果要删除整行(包括换行符),请将正则表达式更改为:

$regex = '~^Int..*R~m';

查看有关 ideone.com 的演示。

最新更新