gpt4 book ai didi

python - 如何使用正则表达式(Python)提取荷兰邮政编码

转载 作者:行者123 更新时间:2023-12-04 07:16:51 26 4
gpt4 key购买 nike

假设我有以下列表:

[4486AE Capelle aan de Ijsel, 4706TR Amsterdam]
我想提取每个元素的邮政编码。
所需的输出是:
[4486AE, 4706TR]
我试图在 Python 中找到荷兰邮政编码的正则表达式。但是,我只找到了一个 JavaScript 表达式。这是我到目前为止尝试过的:
import re

test = '4706TR Amsterdam'
match = re.search(r"/^(?:NL-)?(\d{4})\s*([A-Z]{2})$/i", test)
print(match)
这给了我一个空的结果。这是我从这里得到表达式的地方: https://rgxdb.com/r/4W9GV8AC
任何人都知道如何解决这个问题?其他 SO 帖子不关注荷兰邮政编码的 Python 表达式。

最佳答案

您尝试的模式 /^(?:NL-)?(\d{4})\s*([A-Z]{2})$/i有一个 Javascript 符号。
前导和尾随 /是模式分隔符,^$是断言字符串开始和结束的 anchor 和 /i标志用于不区分大小写的匹配。
在 Python 中,要获得问题中的匹配项,您可以在单词边界之间匹配 4 位数字和 2 个大写字符 A-Z \b防止部分匹配而不是使用 anchor ,因为匹配不是唯一的字符串。
不区分大小写的匹配可以使用 re.IGNORECASE 完成
使用 re.search 也可以返回 None,所以先检查 re.search 是否有值,然后使用 .group()得到比赛。

import re

test = '4706TR Amsterdam'
match = re.search(r"\b\d{4}[A-Z]{2}\b", test, re.IGNORECASE)
if match:
print(match.group())
输出
4706TR
Python demo
如果你想匹配一个可选的 NL-部分,模式可以是:
\b(?:NL-)?\d{4}[A-Z]{2}\b
Regex demo

关于python - 如何使用正则表达式(Python)提取荷兰邮政编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68714465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com