如何从字符串中删除所有数字?

71

我想从一个字符串中删除所有数字[0-9]。我编写了以下代码,它可以工作:


```python import re string = "abc123def456" result = re.sub(r'\d+', '', string) print(result) # "abcdef" ```

我希望你能将其翻译为中文:

$words = preg_replace('/0/', '', $words ); // remove numbers
$words = preg_replace('/1/', '', $words ); // remove numbers
$words = preg_replace('/2/', '', $words ); // remove numbers
$words = preg_replace('/3/', '', $words ); // remove numbers
$words = preg_replace('/4/', '', $words ); // remove numbers
$words = preg_replace('/5/', '', $words ); // remove numbers
$words = preg_replace('/6/', '', $words ); // remove numbers
$words = preg_replace('/7/', '', $words ); // remove numbers
$words = preg_replace('/8/', '', $words ); // remove numbers
$words = preg_replace('/9/', '', $words ); // remove numbers

我希望能找到更优雅的解决方案:1行代码(在我看来,编写漂亮的代码非常重要)。

我在stackoverflow上找到的其他代码也可以去掉变音符号(如á、ñ、ž...)。


1
请参考以下工具:开源RegexBuddy替代品在线正则表达式测试,或者RegExp.info提供更好的教程。 - mario
6个回答

183
对于西方阿拉伯数字(0-9):
$words = preg_replace('/[0-9]+/', '', $words);

对于所有数字,包括西方阿拉伯数字(例如印度):

$words = '१३३७';
$words = preg_replace('/\d+/u', '', $words);
var_dump($words); // string(0) ""
  • \d+ 匹配多个数字。
  • 修饰符 /u 启用 Unicode 字符串处理。这个修饰符非常重要,否则数字将无法匹配。

57

试试正则表达式 \d

$words = preg_replace('/\d/', '', $words );

\d[0-9]的等价表示,代表数字范围从09


4
这个方案比被接受的解决方案更聪明,更简洁,对吧? - kasimir
6
你需要知道的是,\d 在 UTF-8 编码中代表的是所有数字,不仅包括 0123456789,还包括其他语言中的数字。 - PhoneixS

7

使用预定义字符范围,也称为字符类

echo $words= preg_replace('/[[:digit:]]/','', $words);


我知道我可以通过谷歌搜索来了解,但在回答中提到什么是PCR会更好...这个方法是否能够捕获其他答案中提到的西阿拉伯字符? - brasofilo
1
你可以使用PCR [:nd:]代替[:digit:]。 - Naveen DA

6

使用正则表达式,例如[0-9]\d

$words = preg_replace('/\d+/', '', $words );

您可能需要阅读preg_replace()文档,因为这里直接显示。


1
\d 后面的 + 是多余的。显然,零位数字是不能被替换的。 - vladkras

-1

或者,你可以这样做:

$words = trim($words, " 1..9");

1
什么?Trim只能处理字符串的开头和结尾,无法涵盖像hello12 world这样的情况。 - Eduard
我同意,如果在两个非数字之间存在一个数字,则此未经解释的答案是不可靠的。 - mickmackusa

-2

正则表达式

   $words = preg_replace('#[0-9 ]*#', '', $words);

这个答案去掉了数字和空格,但提问者并不希望这种行为,并且从未要求过。 - mickmackusa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接