python - 使用正则表达式获取字符串混合
问题描述
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]+-[0-9]+ [A-Z][0-9]+\b
在零件
\b
字边界[A-Z][0-9]+
匹配单个 AZ 和 1+ 位-[0-9]+
匹配-
, 1+ 个数字和一个空格[A-Z][0-9]+
匹配单个 AZ 和 1+ 位\b
字边界
例如
import re
regex = r"\b[A-Z][0-9]+-[0-9]+ [A-Z][0-9]+\b"
test_str = "words here plus num A18-11186 B7 and Q12-45786 D3"
print(re.findall(regex, test_str))
输出
['A18-11186 B7', 'Q12-45786 D3']
推荐阅读
- vim - 尽可能快地使 w0rp 异步 Lint 引擎“ALE”?
- powerapps - PowerApps interate through list updates
- javascript - React 组件设置状态未按预期工作
- python - 将 JSON 元素分隔到 pandas 数据框的列中
- image - 在二值化图像中分离交叉段
- android - 无法打开/qemu.conf,错误:2
- variables - 如何气流变量的值包含外来字符?
- python - 按分隔符拆分列并删除扩展列
- vsphere - cloud-init 用户数据传递到的 linux 文件位置是什么?
- python - Python3.7 转换逗号分隔的日期时间