删除数字,然后从字符串的开头删除一个空格

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.

【讨论】:

在删除字符后捕获子字符串,然后将其添加回字符串作为替换字符串是不必要的额外工作。字符串锚的结尾也不是必需的。

以上是关于删除数字,然后从字符串的开头删除一个空格的主要内容,如果未能解决你的问题,请参考以下文章

使用 vba 从字符串中删除空格

从字符串中删除数字和最后一个空格(如果存在)

在 Objective-C 中从字符串中删除空格

如何从字符串中删除除字母、数字、空格、感叹号和问号之外的所有内容?

除了文本,如何从文本中删除数字、标点、空格和特殊字符? [复制]

从C中的字符串中删除空格