preg 替换为正则表达式
preg replace with regex between
我正在尝试删除一段在 Int.
和换行符之间开始的字符串。
$string = preg_replace('/Int.[\s\S]+?\n/', '', $string);
这是源字符串:
My address
Int. blabla
blabla blabla
这可能吗?
您可以使用以下解决方案:
$s = "My address\nInt. blabla\nblabla blabla";
$s = preg_replace('~Int\.\h*([^\r\n]+)[\r\n]*~', '', $s);
echo $s; // => My address\nblabla blabla
正则表达式将匹配 Int.
,然后是零个或多个空格(\h*
,就在结果的左边-trim),然后将一个或多个字符捕获到第 1 组中除了换行和回车 return 符号 (([^\r\n]+)
)
要删除字符串,只需使用以下代码:
$string = "My address\nInt. blabla\nblabla 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';
我正在尝试删除一段在 Int.
和换行符之间开始的字符串。
$string = preg_replace('/Int.[\s\S]+?\n/', '', $string);
这是源字符串:
My address
Int. blabla
blabla blabla
这可能吗?
您可以使用以下解决方案:
$s = "My address\nInt. blabla\nblabla blabla";
$s = preg_replace('~Int\.\h*([^\r\n]+)[\r\n]*~', '', $s);
echo $s; // => My address\nblabla blabla
正则表达式将匹配 Int.
,然后是零个或多个空格(\h*
,就在结果的左边-trim),然后将一个或多个字符捕获到第 1 组中除了换行和回车 return 符号 (([^\r\n]+)
)
要删除字符串,只需使用以下代码:
$string = "My address\nInt. blabla\nblabla 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';