如何移除字符串末尾所有数字?现有Regex仅删除单个数字求解决
移除字符串末尾所有数字的解决方案
正则表达式方法
你之前的正则只能删除单个数字,是因为仅匹配了末尾的一组数字,没覆盖前面的“空格+数字”组合。可以修改正则,把“空格+数字”作为可重复单元来匹配:
import re text = "Car 7 5 8 7 4" # 写法1:匹配末尾连续的“空格+数字”组合 result = re.sub(r'(\s+\d+)+$', '', text) # 写法2:更简洁的等价写法 result = re.sub(r'\s*\d+(?:\s+\d+)*$', '', text) print(result) # 输出:Car
正则说明:
\s*\d+:匹配开头的可选空格加至少一个数字(?:\s+\d+)*:非捕获组,重复匹配“空格+数字”的组合,确保能覆盖所有末尾的数字项$:锚定字符串末尾,避免误删中间的数字
非正则方法
如果不想用正则,也可以通过分割字符串后反向遍历实现:
text = "Car 7 5 8 7 4" parts = text.split() # 从后往前找到第一个非数字的元素位置 for idx in range(len(parts)-1, -1, -1): if not parts[idx].isdigit(): break result = ' '.join(parts[:idx+1]) print(result) # 输出:Car
这个方法先按空格拆分字符串为列表,从末尾逐一检查元素是否为数字,直到找到第一个非数字元素,最后将前面的元素重新拼接成字符串。
内容的提问来源于stack exchange,提问作者Mr.Slow
相关产品推荐
相关产品推荐

