PHP 的 preg_replace() 函数并未替换所有行

PHP 的 preg_replace() 函数并未替换所有行

PHP 的 preg_replace() 函数不会替换以下所有行:

12*some input
12*some input
1*some input

代码如下:

preg_replace("/^(\d{1,2}[^0-9])/", "", $text);

结果是:

some input
12*some input
1*some input

但我想要的是这个:

some input
some input
some input

答案1

根据 PHP 的实现方式,我认为您缺少一个选项,或者您的正则表达式没有按照您想象的那样执行。

/^(\d{1,2}[^0-9])/

上述正则表达式会从字符串开头查找 1-2 个数字,后面不是数字。根据其工作原理,换行符并不表示应该^再次匹配。

如果你看看手册中的 PCRE 模式修饰符您可能需要提供m标志来打开多行模式。

此外,尽管手册页中没有说明,但您可能需要全局标志。因此,上述正则表达式将变为:

/^(\d{1,2}[^0-9])/gm

您也可以在以下平台上测试此正则表达式RegEx 101

相关内容