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

正则表达式清洗姓名数据:保留允许符号,移除非法字符

解决姓名列的非法符号清洗问题

嘿,我来帮你搞定这个姓名数据清洗的问题!你之前用的[^a-zA-Z ]+正则之所以无效,是因为它只保留了字母和空格,把你需要保留的逗号、点号和破折号也一并删掉了——这显然不是你想要的结果。

正确的正则表达式

我们需要调整否定字符集,把允许保留的字符都加进去,也就是字母、空格、逗号(,)、点号(.)和破折号(-)。正确的正则应该是:

[^a-zA-Z ,.-]+

注意:破折号-要放在字符集的最后(或者转义成\-),不然会被当成字符范围的分隔符,导致正则逻辑出错。

效果演示

用你的示例输入测试:

  • 输入:Gustav Mag$nus Oswald , Mr. Clement Fleevle Fust-Kratz
  • 用正则替换所有匹配到的字符为空后,输出:Gustav Magnus Oswald, Mr. Clement Fleevle Fust-Kratz
    完全符合你的期望!

代码示例(以Python为例)

如果是用Python处理批量数据,可以写个简单的函数:

import re

def clean_full_name(raw_name):
    # 定义允许保留的字符集合,按需扩展
    allowed_chars = r'[^a-zA-Z ,.-]+'
    return re.sub(allowed_chars, '', raw_name).strip()  # strip()去除首尾可能的多余空格

# 测试示例
test_input = "Gustav Mag$nus Oswald , Mr. Clement Fleevle Fust-Kratz"
cleaned_name = clean_full_name(test_input)
print(cleaned_name)

额外提示

如果你的姓名数据里还有其他需要保留的特殊字符(比如撇号',像O'Neil;或者连字符的其他形式),只需要把对应的字符加入到正则的字符集里就行。比如要保留撇号,正则就改成:

[^a-zA-Z ,.-']+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:32:12