python - 正则表达式匹配无法在 python 中选择带有空格的字母数字字符串
问题描述
我在python中有以下表达式列表
LIST1=["AR BR_18_0138249", "AR R_16_01382649", "BR 16 0138264", "R 16 01382679" ]
在上面的字符串中,一些模式是字母数字,但第二组序列之间有一个空格。我期望以下输出
"AR BR_18_0138249"
"AR R_16_01382649"
"BR 16 0138264"
"R 16 01382679"
我试过下面的代码
import regex as re
pattern = r"(\bB?R_\w+)(?!.*\1)|(\bB?R \w+)(?!.*\1)|(\bR?^sd \w+)(?!.*\1)"
for i in LIST1:
rest = re.search(pattern, i)
if rest:
print(rest.group(1))
我得到了以下结果
BR_18_0138249
R_16_01382649
None
None
我无法获得带有空格的序列。我请求有人在这方面指导我
解决方案
您可以使用
\b(B?R(?=([\s_]))(?:\2\d+)+)\b(?!.*\b\1\b)
查看正则表达式演示
细节
\b
- 单词边界(B?R(?=([\s_]))(?:\2\d+)+)
- 第 1 组:可选B
, thenR
, 然后是一个或多个空格或下划线序列,后跟一个或多个数字(如果您需要在此处支持字母,请替换\d+
为[^\W_]
)\b
- 单词边界(?!.*\b\1\b)
- 如果存在匹配失败的负前瞻.*
- 除换行符以外的任何零个或多个字符,尽可能多\b\1\b
- 与第 1 组中的相同值匹配为整个单词(不包含字母、数字或下划线)。
查看Pythonre
演示(此处不需要 PyPi 正则表达式模块):
import re
LIST1=["AR BR_18_0138249", "AR R_16_01382649", "BR 16 0138264", "R 16 01382679" ]
pattern = r"\b(B?R(?=([\s_]))(?:\2\d+)+)\b(?!.*\b\1\b)"
for i in LIST1:
rest = re.search(pattern, i)
if rest:
print(rest.group(1))
推荐阅读
- php - 如何在 php 中调用 PowerShell 脚本以从 AD 中的两个域控制器获取 lastlogin 数据
- postgresql - 无法删除主表数据postgresql
- azure - Azure:将资源从一个订阅移动到另一个具有依赖关系的订阅
- vue.js - 在 vue 鼠标悬停事件中
- jquery - 在codeigniter 4中对提交事件进行ajax调用时得到403禁止
- node.js - 为什么 process.stdout.on('data' 在我按下回车键 (node.js) 之前不会触发?
- javascript - 如何从用户那里获取输入并将其显示在屏幕上,当他分享 url 时,获得 url 的人可以看到该输入
- wcf - 在 WCF 中遇到最大邮件大小配额
- python - 使用列值+python中这些值的别名来命名excel文件
- tableau-api - 在 tableau 中,我想创建一个基于过滤器的计算字段,并输出也基于过滤器的答案