如何用正则表达式清理Python字符串开头的序号类前缀?
移除字符串开头的序号类前缀解决方案
你之前用的(\W)(\w.*)正则只匹配单个非单词字符,没法覆盖数字、罗马字母加标点的完整前缀结构,我给你调整一下正则逻辑:
正则表达式说明
用^[0-9#IVXLCDM]+[.)]\s*来匹配开头的序号前缀,各部分含义:
^:锚定字符串起始位置,确保只匹配开头的前缀[0-9#IVXLCDM]+:匹配数字、#或者罗马数字字符(I/V/X/L/C/D/M是罗马数字基础字符),+表示至少匹配一个[.)]:匹配前缀后的标点(.或))\s*:匹配前缀后可能存在的任意数量空格(包括零个)
Python代码实现
import re def clean_string_prefix(input_str): # 替换匹配到的前缀为空字符串 return re.sub(r'^[0-9#IVXLCDM]+[.)]\s*', '', input_str) # 测试示例 test_cases = [ "1. bla bla", "#. bla bla", "3) bla bla", "I. bla bla", "XII. hello world", # 额外测试多字符罗马数字 "5) test with multiple spaces" # 测试多空格情况 ] for case in test_cases: print(f"原字符串: {case} → 处理后: '{clean_string_prefix(case)}'")
运行后所有测试用例都会得到你期望的结果。如果还有其他特殊前缀格式(比如带括号的(1)),可以再扩展正则里的匹配规则。
内容的提问来源于stack exchange,提问作者Tibo
相关产品推荐
相关产品推荐

