以下字符串:
23434 5465434
58495/46949345
58495 - 46949345
58495/55643
d 44444 ssdfsdf
64784
45643 dfgh
55643分之58495
四千八百三十〇万九千五百九十六分之四万八千五百九十三
675643235
34565435 34545
它只想提取粗体。它是一个五位数字(德语)。
它不应与电话号码43564 366334
或45433 / 45663
等匹配,如上例所示。
我试过像^\b\d{5}
这样的东西,但这不是一个好的开始。
有些提示让我能够正常工作吗?
感谢所有提示
答案 0 :(得分:2)
您可以添加一个负面的预测断言,以避免与电话号码匹配。
\b[0124678][0-9]{4}\b(?!\s?[ \/-]\s?[0-9]+)
如果你使用的是Ruby 1.9,你也可以添加一个负面的后视断言。
答案 1 :(得分:1)
您尚未指定区分您尝试搜索的号码。
根据您提供的示例字符串,看起来您只需要:
^(\d{5})\n
匹配以5位数字开头且不包含任何其他内容的行。
您可能希望在前5位数之后允许一些空格(但没有其他内容):
^(\d{5})\s*\n
答案 2 :(得分:1)
这是德国邮政编码(Source)
的正则表达式^([0124678][0-9]{4})$
答案 3 :(得分:0)
我不完全确定指定的规则。但是如果你想要以5位数字开头并且不包含其他数字的行,这可能有效:
^(\d{5})[^\d]*$
如果领先的空白区域没问题,那么:
^\s*(\d{5})[^\d]*$
以下是显示结果的Rubular link。
答案 4 :(得分:0)
^\D*(\d{5})(\s(\D)*$|()$)
这应该(未经测试)匹配:
\ 1将是五位数
\ 2将是整个下半场,如果有的话
\ 3将是数字后的单词,如果有的话
编辑以适应提问者的编辑问题
再次编辑:我提出了一个更优雅的解决方案:
^\D*(\d{5})\D*$