我正在尝试创建一个正则表达式来解析字符串中的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"
答案 0 :(得分:6)
由于您使用支持它们的语言,因此使用负面外观:
"(?<!\\d)\\d{5}(?!\\d)"
这些将断言您的\\d{5}
既不是数字之前也不是数字。这是由于字符串的边缘还是非数字字符无关紧要。
请注意,这些断言本身是零宽度匹配。所以这些角色实际上不会包含在比赛中。这就是为什么他们被称为lookbehind和lookahead。他们只是检查那里有什么,而不是让它成为比赛的一部分。这是使用\\D
的另一个缺点,其中包括匹配中的非数字字符(或要求您使用捕获组)。