正则表达式替换直到php中的特定字符

时间:2016-11-23 19:45:32

标签: php regex

我们说我有一个字符串:

a) 'one4two2three1'
b) 'one4two2three1four#five7'

我想用空格替换这些字符串中的所有数字('') - 直到'#'字符

所以最终输出应该是:

a) 'onetwothree'
b) 'onetwothreefour#five7'

有没有办法用preg_replace()或任何其他正则表达式函数来做?

我试图避免“如果'使用strpos()和substr()并找到更有效的方法

1 个答案:

答案 0 :(得分:3)

您可以使用PCRE动词(*SKIP)(*F)来匹配并放弃#之后的部分:

$repl = preg_replace('/#[^#]*$(*SKIP)(*F)|\d+/m', '', $str);

RegEx Demo

#[^#]*$(*SKIP)(*F)将匹配并跳过输入中#之后的部分,然后我们可以用空字符串替换所有数字。