删除数字,然后从字符串的开头删除一个空格
Posted
技术标签:
【中文标题】删除数字,然后从字符串的开头删除一个空格【英文标题】:Remove number then a space from the start of a string 【发布时间】:2011-04-08 22:49:15 【问题描述】:如何从字符串的开头删除数字和空格?
例如,从“13 Adam Court, Cannock”中删除“13”
【问题讨论】:
@Null:我想我们会让模组决定做什么。可能合并问题。 【参考方案1】:如果输入的字符串都具有相同的预期格式,并且通过左修剪所有数字和空格(无论它们在字符串前面出现的顺序如何),您将收到相同的结果,那么您实际上不需要启动正则表达式引擎。
我喜欢正则表达式,但除非它比非正则表达式技术提供有价值的优势,否则不要使用它。正则表达式通常比非正则表达式技术慢。
将ltrim()
与包含空格和数字的字符掩码一起使用。
代码:(Demo)
var_export(
ltrim('420 911 90210 666 keep this part', ' 0..9')
);
输出:
'keep this part'
字符串是否以空格开头也没关系。 ltrim()
会贪婪地删除字符串开头的所有空格或数字实例,直到它不能再删除为止。
【讨论】:
【参考方案2】:因为其他人都在走\d+\s路线,所以我会给你脑残的答案
$str = preg_replace("#([0-9]+ )#","",$str);
明智的说法,不要在正则表达式中使用 / 作为分隔符,在尝试执行文件路径或类似 http://
时,您会遇到可怕的倾斜牙签问题:)
【讨论】:
明智的说法,如果模式不包含正斜杠,则没有逻辑理由避免正斜杠模式分隔字符。【参考方案3】:您其他问题上的same regex I gave you 仍然适用。你只需要改用preg_replace()
。
搜索/^[\s\d]+/
并替换为空字符串。例如:
$str = preg_replace(/^[\s\d]+/, '', $str);
这将从字符串开头以任意顺序删除数字和空格。对于仅删除数字后跟空格的内容,请参阅 BoltClock 的答案。
【讨论】:
【参考方案4】:我会使用
/^\d+\s+/
它在字符串的开头寻找任意大小的数字 ^\d+
然后在\s+
\s+
当您在某些字母前使用反斜杠时,它表示某事...
\d
代表一个数字 0,1,2,3,4,5,6,7,8,9
。
\s
代表一个空格 .
在末尾添加一个加号 (+
) 即可...
\d+
一串数字(数字)
\s+
多个空格(错别字等)
【讨论】:
【参考方案5】:使用我在javascript answer 中提供的相同正则表达式,但使用preg_replace()
应用它:
preg_replace('/^\d+\s+/', '', $str);
【讨论】:
嗯,原来我正在运行正则表达式的变量也会吐出大量 html,在这种情况下,删除所有数字仍然是安全的,所以这只是 'd '?非常感谢您的回复! @Probocop:如果您只想从开头删除数字,请使用/^\d+/
;如果要删除所有数字,请删除 ^
。
太棒了,非常感谢! (我真的需要有时间学习正则表达式)
有趣的是,您通过接受我们对每个问题的不同答案,给了我和 NullUserException +15 代表。代表我们感谢 :)【参考方案6】:
试试这个:
^\d+ (.*)$
像这样:
preg_replace ("^\d+ (.*)$", "$1" , $string);
资源:
preg_replace regular-expressions.info关于同一主题:
Regular expression to remove number, then a space? regular expression for matching number and spaces.【讨论】:
在删除字符后捕获子字符串,然后将其添加回字符串作为替换字符串是不必要的额外工作。字符串锚的结尾也不是必需的。以上是关于删除数字,然后从字符串的开头删除一个空格的主要内容,如果未能解决你的问题,请参考以下文章
如何从字符串中删除除字母、数字、空格、感叹号和问号之外的所有内容?