尝试为自定义.NET应用程序处理表达式,以便从地址中提取邮政编码。
地址在一行
12345 Example Street, NY 10019 United States
使用以下表达式
\d{3,5}-\d{3,5}|\d{5}(?![A-Z]{2})
但这似乎同时提取了12345
以及邮政编码10019
。考虑到我在负向前瞻中仅提到了2个大写字母,不应该只考虑前面带有2个字母NY代码的邮政编码吗?我在这里做错了什么?
我使用|
运算符,因为邮政编码为12345-12345
以及12345
格式
请检查我正在测试的正则表达式here
答案 0 :(得分:2)
你可以在这里使用lookbehind:
\d{3,5}-\d{3,5}|(?<=[A-Z]{2}\s+)\d{5}
请参阅regex demo
(?<=[A-Z]{2}\s+)
将需要2个大写字母,然后在5个数字之前需要1个或多个空格。
为确保您匹配指定的位数,您可以使用字词边界\b
:
\b(?:\d{3,5}-\d{3,5}|(?<=[A-Z]{2}\s+)\d{5})\b
请参阅another demo。