2016-11-06 37 views
-1

我想删除第一个数字(包括数字)后的所有内容。如何在字符串中第一次出现数字后删除所有内容?

例子:

banner400x300 
icon80x42   
bla bla55x44  

应该是:

banner 
icon 
bla bla 

我想是这样的:

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

但是,这其中包括第一号:(

是什么一个咕这样做的方式?谢谢:)

+0

好点的方法包括以匹配所有不是从'preg_match'字符串的开始数,而不是取代。这样你就不需要解析字符串直到结束。 –

回答

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; 
相关问题