preg_match 替换整行
preg_match replace entire line
我是 PHP preg_match 函数的新手。如何使用 preg_match?
替换特定字符前的所有内容
样本:
text1
text2
text3
text3
# text 5
我想删除“#”号前的所有内容。那可能吗?这是我的代码但不确定
$replace_match = '/^.*' . '#' . '.*$(?:\r\n|\n)?/m';
不要使用 preg_matches(),
如果要删除某个字符串之前的所有字符,请在条件中使用 strpos() function with some conditions and use str_replace()..
这是实现这一点的非常简单和标准的方法。
您可以匹配所有不以 #
开头的行,直到您可以匹配开头的 #
。
^(?:(?!#).*\R)+#
^
字符串开头
(?:
非捕获组
(?!#).*\R
否定前瞻,直接在右边断言not #
。如果是这种情况,则匹配整行后跟一个换行符
)+
关闭组并重复 1+ 次以匹配至少一行
#
按字面匹配以确保字符存在
在替换中使用 #
例子
$re = '/^(?:(?!#).*\R)+#/m';
$str = 'text1
text2
text3
text3
# text 5';
echo preg_replace($re, "#", $str);
输出
# text 5
我是 PHP preg_match 函数的新手。如何使用 preg_match?
替换特定字符前的所有内容样本:
text1
text2
text3
text3
# text 5
我想删除“#”号前的所有内容。那可能吗?这是我的代码但不确定
$replace_match = '/^.*' . '#' . '.*$(?:\r\n|\n)?/m';
不要使用 preg_matches(),
如果要删除某个字符串之前的所有字符,请在条件中使用 strpos() function with some conditions and use str_replace()..
这是实现这一点的非常简单和标准的方法。
您可以匹配所有不以 #
开头的行,直到您可以匹配开头的 #
。
^(?:(?!#).*\R)+#
^
字符串开头(?:
非捕获组(?!#).*\R
否定前瞻,直接在右边断言not#
。如果是这种情况,则匹配整行后跟一个换行符
)+
关闭组并重复 1+ 次以匹配至少一行#
按字面匹配以确保字符存在
在替换中使用 #
例子
$re = '/^(?:(?!#).*\R)+#/m';
$str = 'text1
text2
text3
text3
# text 5';
echo preg_replace($re, "#", $str);
输出
# text 5