假设我有以下列表:
[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符号前导和尾随的
/
是模式分隔符,^
和$
是断言字符串开头和结尾的锚点,/i
标志用于不区分大小写的匹配在Python中,要获得问题中的匹配,可以在单词边界
\b
之间匹配4位数字和2个大写字符A-Z,以防止部分匹配,而不是使用锚,因为匹配不是唯一的字符串不区分大小写的匹配可以使用
re.IGNORECASE
使用re.search也可以返回None,因此首先检查re.search是否有值,然后使用
.group()
获取匹配项输出
见a Python demo
如果要匹配可选的
NL-
部分,模式可以是:Regex demo
相关问题 更多 >
编程相关推荐