Python使用正则表达式提取Ref标识后目标编号的解决方案
解决方案
你可以直接调整正则表达式的捕获规则,无需额外做二次字符串处理,就能直接得到目标结果:
实现代码
import re Sentence = "Messers Buyer's Ref : LSM-021042-5 Payment : Port of Loading and Ref : G2879G has applied with Ref : 031049 is also applied" result = re.findall(r'Ref : (?:[A-Z]+-)?(\w+)(?:-\d)?', Sentence) print(result)
代码输出
['021042', 'G2879G', '031049']
正则规则说明
Ref :先匹配固定的前缀标识,定位编号所在的位置(?:[A-Z]+-)?非捕获组,匹配编号前可能存在的大写字母+横杠组合(例如示例中的LSM-),?表示该部分可选,不存在时也不影响匹配(\w+)核心捕获组,匹配你需要的目标编号内容,re.findall遇到捕获组时只会返回捕获组内的匹配结果(?:-\d)?非捕获组,匹配编号后可能存在的横杠+单个数字后缀(例如示例中的-5),?表示该部分可选
如果后续遇到后缀数字不止1位的场景,可以将最后一段规则调整为(?:-\d+)?即可适配。
内容的提问来源于stack exchange,提问作者user17040675
相关产品推荐
相关产品推荐

