技术需求:移除字符串中字母之后的数字(附示例)
移除所有紧跟在字母之后的数字
需要实现文本处理逻辑,移除字符串中所有紧跟在字母之后的数字序列,具体输入输出对应关系如下:
| 输入 | 输出 |
|---|---|
| 415-424-4005 XT. 21 | 415-424-4005 XT. |
| 1-800-552-3319 EXT 2606 | 1-800-552-3319 EXT |
| 713-840-9300 X104 | 713-840-9300 X |
| 800-454-1628 OPTION#1 | 800-454-1628 OPTION# |
| +1 (844) SAVE-529 | +1 (844) SAVE- |
| 424-252-4813 (EXT 5013) | 424-252-4813 (EXT ) |
| 1-800-55OAKWELL | 1-800-55OAKWELL |
| +1 (212) 603-2800 (EST) | +1 (212) 603-2800 (EST) |
解决方案
可以通过正则表达式实现该逻辑,核心思路是匹配「字母开头,后跟任意非数字字符(可选),再跟连续数字」的片段,将其替换为「字母+后续非数字字符」的部分,保留字母及之后的非数字内容,移除后面的数字序列。
正则规则
- 匹配模式:
([a-zA-Z][^\d]*)\d+ - 替换目标:
\1
Python 代码示例
import re def clean_text(text): return re.sub(r'([a-zA-Z][^\d]*)\d+', r'\1', text) # 测试所有示例 test_cases = [ "415-424-4005 XT. 21", "1-800-552-3319 EXT 2606", "713-840-9300 X104", "800-454-1628 OPTION#1", "+1 (844) SAVE-529", "424-252-4813 (EXT 5013)", "1-800-55OAKWELL", "+1 (212) 603-2800 (EST)" ] for case in test_cases: print(f"输入: {case}") print(f"输出: {clean_text(case)}") print("---")
内容的提问来源于stack exchange,提问作者John Jung
相关产品推荐
相关产品推荐

