用于IBAN mas的Regex

2024-05-16 22:02:06 发布

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

我试图从字符串中提取文本“NL-dd-ABNA-ddddddd”:

IBAN NL 91ABNA0417463300
IBAN NL91ABNA0417164300
Iban: NL 69 ABNA 402032566

这根弦可能有三个或更多的变体。在

但我只知道:

^{pr2}$

它与前两个例子相匹配,但与第三个例子不匹配。在

请参见:https://regex101.com/r/zGDXa2/1。在

我怎么治疗?在


Tags: 字符串https文本comibannl变体dd
3条回答

可以使用以下正则表达式:

(?i)(?:(?<=IBAN(?:[:\s]\s|\s[:\s]))NL\s?\d{2}\s?[A-Z]{4}[0 ]\s?\d{9,10})|(?:(?<=IBAN[:\s])NL\s?\d{2}\s?[A-Z]{4}[0 ]\s?\d{9,10})

演示:

https://regex101.com/r/zGDXa2/11

如果您在python中工作,您可以删除(?:i),并用标志re.Ire.IGNORECASE替换它

^{pr2}$

提取物:

NL 11abna0317164300
NL21ABNA0417134300
NL 29 ABNA 401422366
NL 39 ABNA 0822416395
NL 39 ABNA 0822416395

regex101演示中的问题是,$之后的regex中有一个额外的字符,所以删除它并将0改为{},这样就修复了所有问题,并开始匹配第三行。正确的正则表达式变成

NL\s?\d{2}\s?[A-Z]{4}[0 ]\s?\d{9}$

Check your updated demo

您只需删除所有空格并将其余空格大写,如下所示:

iban = NL 91ABNA0417463300
iban.replace(" ", "")
iban.upper()

然后你的正则表达式是:

^{pr2}$

它在https://regex101.com/r/zGDXa2/1中工作

相关问题 更多 >