【发布时间】:2021-10-13 06:56:19
【问题描述】:
假设我有以下列表:
[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 表达式。
【问题讨论】:
-
/^你不想逃避它。^表示行首,\^表示匹配不在您的字符串中的文字^。另外,为什么\i在$之后?$表示行尾,因此您将永远不会匹配,因为您希望在行尾之后有一个\i。 -
只使用
^(?:NL-)?(\d{4})\s*([A-Z]{2})$对我有用 -
将表达式更改为您的仍然给我一个空输出... match = re.search(r"^(?:NL-)?(\d{4})\s*([ AZ]{2})$", '4706TR 阿姆斯特丹')
-
删除
^和$因为你没有匹配整行:(?:NL-)?(\d{4})\s*([A-Z]{2}) -
试试
(?:NL-)?(\d{4})\s*([A-Z]{2})(?!P.*)
标签: python python-3.x regex pandas