正则表达式:在空格之间找到一个数字

时间:2014-03-12 14:07:53

标签: regex

我正在尝试从字符串中提取以数字4开头的六个数字的邮政编码。我现在正在使用[4][0-9]{5},但它也是从其他数字开始匹配的,例如020-25468811,它正在返回468811。我不希望它在数字中间搜索,只搜索完整的数字。

4 个答案:

答案 0 :(得分:2)

尝试使用以下内容:

(?<!\d)4\d{5}(?!\d)

即。找到以4开头的6位数字,而不是前面或后面的数字。

答案 1 :(得分:1)

您的表达式现在尝试匹配任意六个由4和5之间的数字组成的数字。在0到9之间。要修复此行为,您应该根据Jon的建议添加单词边界。

\b[4][0-9]{5}\b

有关字边界的更多内容:http://www.regular-expressions.info/wordboundaries.html

答案 2 :(得分:0)

您只需在正则表达式" 4[0-9]{5}"的开头添加一个空格即可。如果你需要一种更通用的方法来查找数字的开头(它可能也是制表符,换行符等吗?)你应该看一下预定义的字符类 \s 。另请查看边界匹配器。我不知道你使用的是哪种语言,但正则表达式在大多数语言中都非常相似。请检查此Java regex documentation

答案 3 :(得分:-1)

正则表达式中有一个行首字符:^

你可以这样做:

^4[0-9]{5}

如果数字不总是在一行的开头,你可以更普遍地使用:

\<4[0-9]{5}\>

仅匹配整个单词。 这两个例子都适用于egrep。