You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python的re模块从字符串中提取数字和字母?

如何提取字符串中的数字和字母(正则表达式方案)

嘿,这个需求其实挺常见的,用正则表达式就能轻松解决!核心思路就是精准匹配字母(大小写都包含)和数字,过滤掉其他所有符号。

核心正则表达式

最稳妥的写法是直接指定字符集:

[a-zA-Z0-9]

这个表达式会匹配任意大写字母、小写字母和0-9的数字。如果你的正则引擎支持简写语法,也可以用\w——不过要注意,\w在大多数引擎里等价于[a-zA-Z0-9_],会包含下划线,如果你的场景里不需要下划线,还是用[a-zA-Z0-9]更准确。

实际代码示例

下面给你几个常用编程语言的实现,方便你直接套用:

Python 示例

import re
original_str = "7930: 4487. a5,77"
# 提取所有符合要求的字符并拼接成新字符串
extracted_str = ''.join(re.findall(r'[a-zA-Z0-9]', original_str))
print(extracted_str)  # 输出结果: 79304487a577

re.findall()会找出所有匹配的单个字符,再用''.join()把它们拼接成完整的字符串。

JavaScript 示例

const originalStr = "7930: 4487. a5,77";
// 全局匹配所有符合的字符,再拼接
const extractedStr = originalStr.match(/[a-zA-Z0-9]/g).join('');
console.log(extractedStr); // 输出结果: 79304487a577

这里的g修饰符是关键,它会让正则进行全局匹配,不然只会返回第一个匹配的字符。

额外小技巧

如果你的场景里不需要区分字母大小写,还可以用不区分大小写的修饰符简化写法:

  • 在Python里可以加re.IGNORECASE参数:re.findall(r'[a-z0-9]', original_str, re.IGNORECASE)
  • 或者直接在正则里加(?i)标识:r'(?i)[a-z0-9]'

这样就不用特意写a-zA-Z啦,效果是一样的。

内容的提问来源于stack exchange,提问作者user2155362

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:18:00