import re
s = 'words here plus num A18-11186 B7 and Q12-45786 D3'
我有以下字符串,我想用正则表达式提取A18-11186 B7
和Q12-45786 D3
。我试过以下方法
reg = r'\b(?=\d*[A-Z])((?:[A-Z0-9]+-)(?:\d+-)?\d+)\b'
r1 = re.findall(reg,s)
这让我
['A18-11186', 'Q12-45786']
这是接近我想要的,除了它缺少一个空格,字母和数字
如何更改reg
以获得所需的输出
期望输出
['A18-11186 B7', 'Q12-45786 D3']
在匹配第一个大写字符和最后一个数字之前,您可以不使用正向先行和使用单词边界
\b
来获得匹配部分
\b
词边界[A-Z][0-9]+
匹配单个A-Z和1+数字-[0-9]+
匹配-
,1+个数字和一个空格[A-Z][0-9]+
匹配单个A-Z和1+数字\b
词边界Regex demo| Python demo
例如
输出
如果您不确定预期的格式,则可以使用:
https://regex101.com/r/LMvz15/1
相关问题 更多 >
编程相关推荐