我们说我有一个字符串:
a) 'one4two2three1'
b) 'one4two2three1four#five7'
我想用空格替换这些字符串中的所有数字('') - 直到'#'字符
所以最终输出应该是:
a) 'onetwothree'
b) 'onetwothreefour#five7'
有没有办法用preg_replace()或任何其他正则表达式函数来做?
我试图避免“如果'使用strpos()和substr()并找到更有效的方法
答案 0 :(得分:3)
您可以使用PCRE动词(*SKIP)(*F)
来匹配并放弃#
之后的部分:
$repl = preg_replace('/#[^#]*$(*SKIP)(*F)|\d+/m', '', $str);
#[^#]*$(*SKIP)(*F)
将匹配并跳过输入中#
之后的部分,然后我们可以用空字符串替换所有数字。