使用正则表达式匹配字符串,但特定的字符串组合除外python

2024-09-27 21:27:02 发布

您现在位置:Python中文网/ 问答频道 /正文

在列表中,我需要匹配特定的实例,除了特定的字符串组合:

假设我有一个字符串列表,如下所示:

l = [
'PSSTFRPPLYO',
'BNTETNTT',
'DE52 5055 0020 0005 9287 29',
'210-0601001-41',
'BSABESBBXXX',
'COMMERZBANK'
]

我需要匹配所有指向swift / bic code的单词,此代码的格式如下: 6个字母后接 2个字母/数字后跟 3个可选字母/数字

因此,我编写了以下regex来匹配这种特定的模式

^{pr2}$

我需要处理以下案件:

result = ['PSSTFRPPLYO', 'BNTETNTT', 'BSABESBBXXX' ]

我更喜欢

result = ['PSSTFRPPLYO', 'BNTETNTT', 'BSABESBBXXX', 'COMMERZBANK' ]

所以我需要的是只匹配不包含“bank”这个词的字符串

为此,我将正则表达式改进为:

regex = re.compile((?<!bank/i)(?<!\w)[a-zA-Z]{6}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?(?!\w)(?!bank/i))

简单地说,我使用了否定的前后看法来获得关于这两个概念的更多信息

我的正则表达式没有进行过滤,我错过了什么?在


Tags: 实例字符串列表字母数字resultregexbank
1条回答
网友
1楼 · 发布于 2024-09-27 21:27:02

你可以试试这个:

import re
final_vals = [i for i in l if re.findall('^[a-zA-Z]{6}\w{2}|(^[a-zA-Z]{6}\w{2}\w{3})', i) and not re.findall('BANK', i, re.IGNORECASE)]

输出:

^{pr2}$

相关问题 更多 >

    热门问题