Java正则表达式,用于字符串中任意位置的正好5位数

时间:2012-10-29 22:30:43

标签: java regex

我正在尝试创建一个正则表达式来解析字符串中的5位数字,无论它在哪里,但我似乎无法弄清楚如何得到开始和结束的情况。

我已经使用了以下格式\\d{5}但是这将获取更大数字的子集...但是当我尝试执行类似\\D\\d{5}\\D的操作时,它不适用于最终案例。我很感激这里的任何帮助!谢谢!

举几个例子(55555是应该提取的内容):

At the beginning of the string
"55555blahblahblah123456677788"

In the middle of the string
"2345blahblah:55555blahblah"

At the end of the string
"1234567890blahblahblah55555"

1 个答案:

答案 0 :(得分:6)

由于您使用支持它们的语言,因此使用负面外观:

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

这些将断言您的\\d{5}既不是数字之前也不是数字。这是由于字符串的边缘还是非数字字符无关紧要。

请注意,这些断言本身是零宽度匹配。所以这些角色实际上不会包含在比赛中。这就是为什么他们被称为lookbehind和lookahead。他们只是检查那里有什么,而不是让它成为比赛的一部分。这是使用\\D的另一个缺点,其中包括匹配中的非数字字符(或要求您使用捕获组)。