我试图从字符串集合中提取文本“NL dd ABNA dddddddd”,我需要创建与第三个标题匹配的表达式:
IBAN NL 91ABNA0417463300
IBAN NL91ABNA0417164300
Iban: NL 69 ABNA 402032566
到目前为止,我使用以下正则表达式模式进行提取:
NL\s?\d{2}\s?[A-Z]{4}0\s?\d{9}$
和前两个例子相符,但和第三个不一样。
若要重现此问题,请参阅以下示例:https://regex101.com/r/zGDXa2/1.
我该怎么治疗呢?
4条答案
按热度按时间2ul0zpep1#
你的regex101演示中的问题是,在你的正则表达式中
$
后面有一个额外的字符,所以删除它,并将0
改为[0 ]
,这样就解决了所有问题,并开始匹配你的第三行。正确的正则表达式变成,xt0899hw2#
您可以使用以下正则表达式:
演示:
https://regex101.com/r/zGDXa2/11
如果您使用python,则可以移除
(?:i)
并将其替换为标志re.I
或re.IGNORECASE
测试日期:
摘录:
g2ieeal73#
您可以删除所有空格并将其余部分大写,如下所示:
然后你的正则表达式会是:
它在https://regex101.com/r/zGDXa2/1中工作
3vpjnl9f4#
这不是你想要的,但很管用。
IBAN有一个严格的格式,所以最好将其规范化,接下来只需剪切一部分,因为所有内容都将与regexp匹配,例如:
代码
输出
这不是正则表达式,但应该工作得更快,但如果你知道如何更好地规范化,请帮助它。
您可以看到源代码here。