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。