1

以下字符串:

23434 5465434

58495 / 46949345

58495 - 46949345

58495 / 55643

d 44444 ssdfsdf

64784

45643 dfgh

58495/55643

48593/48309596

675643235

34565435 34545

它只想提取粗体。它是一个五位数的数字(德语)。它不应与我上面的示例中的电话号码43564 36633445433 / 45663等匹配。

我尝试了类似的东西,^\b\d{5}但这不是一个好的开始。

一些提示让我得到这个工作?

感谢所有提示

4

5 回答 5

2

这是德国邮政编码的正则表达式(来源

^([0124678][0-9]{4})$
于 2011-02-19T00:42:14.450 回答
2

您可以添加一个否定的前瞻断言以避免与电话号码匹配。

\b[0124678][0-9]{4}\b(?!\s?[ \/-]\s?[0-9]+)

如果您使用的是 Ruby 1.9,您也可以添加否定的后视断言。

于 2011-02-19T03:03:28.853 回答
1

您尚未指定您要搜索的号码的区别。

根据您提供的示例字符串,您似乎只想: ^(\d{5})\n

匹配以 5 位数字开头且不包含其他内容的行。

您可能希望在前 5 位数字之后允许一些空格(但仅此而已): ^(\d{5})\s*\n

于 2011-02-19T00:36:17.090 回答
0

我不完全确定指定的规则。但是,如果您想要以 5 位数字开头且不包含其他数字的行,这可能有效:

^(\d{5})[^\d]*$

如果前导空格没问题,那么:

^\s*(\d{5})[^\d]*$

这是显示结果的Rubular 链接。

于 2011-02-19T00:35:09.080 回答
0
^\D*(\d{5})(\s(\D)*$|()$)

这应该(未经测试)匹配:

  • 以五位数字(或一些非数字,然后是五位数字)开头的行,然后是一个空格,并以一些非数字结尾
  • 以五位数字(或一些非数字,然后是五位数字)开头和结尾的行

\1 将是五位数

\2 将是整个下半场,如果有的话

\3 将是数字后的单词,如果有的话

编辑以适合提问者的编辑问题

再次编辑:我想出了一个更优雅的解决方案:

^\D*(\d{5})\D*$
于 2011-02-19T00:43:44.713 回答