【问题标题】:Extract german zipcode from line in Java从Java中的行中提取德国邮政编码
【发布时间】:2010-05-31 09:48:10
【问题描述】:

我需要从文件的行中提取邮政编码。 每行包含一个地址,并以不同的方式格式化。 例如。 “Großen Haag 5c,DE-47559 Kranenburg” 或者 “朗格鲁特 7b, 55294 博登海姆”

邮政编码总是一个五位数字,有时跟在“DE-”后面。 我使用Java。 非常感谢!

【问题讨论】:

    标签: java regex zipcode


    【解决方案1】:
    \b\d{5}\b
    

    如果它们是“单独的”,即被单词边界包围,则将匹配 5 个数字(以确保我们不匹配较长数字序列的子字符串,尽管这些在地址文件中可能很少见)。

    请记住,您需要转义 Java 字符串 ("\\b\\d{5}\\b") 中的反斜杠。

    【讨论】:

    • 谢谢!但他们并不总是“孤独”的。有时我有“DE-12345”
    • 是的,这是因为- 和数字之间的位置算作单词边界。它只是不会匹配像123456 这样的数字,因为它包含超过五位数字。
    • 啊,好吧,没有得到单词边界的管理。谢谢!关于 Java 的另一个问题:matcher.matches() 给了我一个布尔值,但我如何返回邮政编码本身?
    • 我认为如果数据是由用户输入的,你不应该依赖单词边界——也许有人输入了 D12345。五位数不会出现在其他任何地方,所以无论如何它都是邮政编码是一个不错的选择。也就是说,当然,除非有五位数的门牌号码,但我不知道有:)
    • @tzippy: matcher.group() 应该会给你匹配结果。当然,如果您不需要 \b,也可以删除它们。
    【解决方案2】:

    Pattern.matcher("[0-9]{5}")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      相关资源
      最近更新 更多