2024-05-16 22:02:06 发布
网友
我试图从字符串中提取文本“NL-dd-ABNA-ddddddd”:
IBAN NL 91ABNA0417463300 IBAN NL91ABNA0417164300 Iban: NL 69 ABNA 402032566
这根弦可能有三个或更多的变体。在
但我只知道:
它与前两个例子相匹配,但与第三个例子不匹配。在
请参见:https://regex101.com/r/zGDXa2/1。在
我怎么治疗?在
可以使用以下正则表达式:
(?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.I或re.IGNORECASE替换它
(?:i)
re.I
re.IGNORECASE
提取物:
NL 11abna0317164300 NL21ABNA0417134300 NL 29 ABNA 401422366 NL 39 ABNA 0822416395 NL 39 ABNA 0822416395
regex101演示中的问题是,$之后的regex中有一个额外的字符,所以删除它并将0改为{},这样就修复了所有问题,并开始匹配第三行。正确的正则表达式变成
$
0
NL\s?\d{2}\s?[A-Z]{4}[0 ]\s?\d{9}$
Check your updated demo
您只需删除所有空格并将其余空格大写,如下所示:
iban = NL 91ABNA0417463300 iban.replace(" ", "") iban.upper()
然后你的正则表达式是:
它在https://regex101.com/r/zGDXa2/1中工作
可以使用以下正则表达式:
演示:
https://regex101.com/r/zGDXa2/11
如果您在python中工作,您可以删除
(?:i)
,并用标志re.I
或re.IGNORECASE
替换它^{pr2}$
提取物:
regex101演示中的问题是,},这样就修复了所有问题,并开始匹配第三行。正确的正则表达式变成
$
之后的regex中有一个额外的字符,所以删除它并将0
改为{Check your updated demo
您只需删除所有空格并将其余空格大写,如下所示:
然后你的正则表达式是:
^{pr2}$它在https://regex101.com/r/zGDXa2/1中工作
相关问题 更多 >
编程相关推荐