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

标签 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"

最佳答案

由于您使用的是支持它们的语言,因此请使用负面环视:

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

这些将断言您的 \\d{5} 前面或后面都没有数字。无论是由于字符串的边缘还是非数字字符,都无关紧要。

请注意,这些断言本身是零宽度匹配。所以这些字符实际上不会包含在匹配中。这就是它们被称为后视和前视的原因。他们只是检查那里有什么,实际上并没有把它作为比赛的一部分。这是使用 \\D 的另一个缺点,它会在您的匹配中包含非数字字符(或要求您使用捕获组)。

关于Java正则表达式,用于字符串中任意位置的恰好5位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13130605/

相关文章:

javascript 正则表达式模式匹配 css 选择器

java - 还需要 rmic 吗?

Java制作一个单独的注释,结合了其他注释

sql - 如何在postgresql中搜索不同的字符集?

javascript - 正则表达式 - 获取引号之间的字符

Java 正则表达式速成

java - Sparkle 将 css 文件视为路由

java - UNIX:java 程序命令从终端运行但不能从 bash 脚本运行

java - 如何在我的应用程序中实现语音转文本

java - REGEX 未按预期在 JAVA 程序中工作