如何在字符串中第一次出现数字后删除所有内容?

时间:2016-11-06 23:43:37

标签: php regex

我想删除第一个号码后的所有内容(包括号码)。

示例:

banner400x300   
icon80x42        
bla bla55x44    

应该是:

banner   
icon  
bla bla   

我试过这样的事情:

preg_replace("/([^0-9]*[0-9]*)(.*)/", "$1", $str);

但它包括第一个数字:(

这样做的好方法是什么?谢谢:))

1 个答案:

答案 0 :(得分:3)

原因是第一个捕获组包含[0-9]*,因此通过$1反向引用重新插入到结果中。

最简单的正则表达式是

preg_replace('~\d.*~', '', $s)

请参阅regex demo

\d.*正则表达式找到带有\d的第一个数字(因为字符串是从左到右处理的),而.*将匹配到行的末尾(以匹配换行,添加s修饰符:'~\d.*~s')。

PHP demo

$str = "banner400x300\nicon80x42\nbla bla55x44";
$result = preg_replace('~\d.*~', '', $str);
echo $result;