正则表达式匹配无法在python中选择带空格的字母数字字符串
我有以下python中的表达式列表正则表达式匹配无法在python中选择带空格的字母数字字符串,python,regex,match,alphanumeric,Python,Regex,Match,Alphanumeric,我有以下python中的表达式列表 LIST1=["AR BR_18_0138249", "AR R_16_01382649", "BR 16 0138264", "R 16 01382679" ] 在上面的字符串中,有一些模式是字母数字的,但在两个第二组序列之间有一个空格。我期望得到以下结果 "AR BR_18_0138249" "AR R_16_01382649&quo
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
-第1组:可选的(B?R(?=([\s_])(?:\2\d++)
,然后是B
,然后是一个或多个空格或下划线序列,后跟一个或多个数字(如果您需要在此处支持字母,请将R
替换为\d+
)[^\W\u]
-单词边界\b
-如果存在,则会导致匹配失败的负前瞻(?!.\b\1\b)
-除换行符以外的任何零个或多个字符,尽可能多*
-与第1组中的值相同,匹配为一个完整的单词(不包含字母、数字或下划线)\b\1\b
[A-Z]{1,2}\s([A-Z]{1,2}+(?:_[0-9]+)*|[0-9]+(?:\s[0-9]+)*)
此正则表达式提供以下输出:
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