我有以下文字
text = "This is a string with C1234567 and CM123456, CM123, F1234567 and also M1234, M123456"
我想提取这个子串列表
['C1234567', 'CM123456', 'F1234567']
这就是我想出来的
new_string = re.compile(r'\b(C[M0-9]\d{6}|[FM]\d{7})\b')
new_string.findall(text)
但是,我想知道是否有办法更快地完成这项工作,因为我有兴趣执行此操作数万次。
我以为我可以使用^
来匹配字符串的开头,但我提出的正则表达式
new_string = re.compile(r'\b(^C[M0-9]\d{6}|^[FM]\d{7})\b')
不再退货了。我知道这是一个非常基本的问题,但我不确定如何正确使用^
。
答案 0 :(得分:2)
好消息和坏消息。坏消息,正则表达式看起来相当不错,难以改进。好消息,我有一些想法:)如果你正在寻找性能,我会尝试在盒子外做一点思考。我使用Python进行Extract Transform Load工作。