我正在尝试用Java语言编写一个正则表达式,该正则表达式将获取所有两个数字(两个数字不能以0开头),并且不以字符开头和结尾。
例如,我要匹配以下字符串中的数字30:
character30 wordstart
wordstart 30个字符
数字30在这里
但不想在以下方面:
字符30个字符
3000
我正在尝试使用环视功能来完成此操作,到目前为止,我得出的最接近的结果是:(?<!\w)(1[2-9]|[2-9][0-9])(?!([\w]))
两位数字不能以0开头,我不想在三位数字中匹配两位数字。
最佳答案
您可以使用以下正则表达式:
(?<!\S)[1-9]\d(?!\d)|(?<!\d)[1-9]\d(?!\S)
在Java字符串文字中定义regex模式时,请记住将反斜杠加倍。
模式匹配:
(?<!\S)
-下一个数字必须以空格或字符串开头[1-9]\d
-1到9之间的数字,然后是任意一位(?!\d)
-两位数字后不能再跟一位数字|
-或(?<!\d)
-在...之前不能有数字[1-9]\d
-1到9之间的数字,然后是任意一位(?!\S)
-后面应带有空格或字符串结尾。
关于java - 正则表达式获取2位数字,数字不立即在Java字符之前和之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42402568/