java - 正则表达式获取2位数字,数字不立即在Java字符之前和之后

标签 java regex regex-lookarounds

我正在尝试用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/

相关文章:

java - 谁能给我更好的解决方案,将两个排序数组合并到另一个排序数组中

Java JAR : Writing to a file

PHP 正则表达式 : Matching "Space" if only within delimiter

regex - 检查字符串中是否有日期并提取字符串的一部分

java - 扩展 hibernate 实体以添加非拥有关系,针对同一个表

java - 设置可见时无法更改 JFrame 尺寸

python - 在 Python 中使用正则表达式作为模板

c++ - 正则表达式,丢失结果组

regex - Perl 正则表达式 : Negative lookaheads

java - 如何在lookahead中添加通配符?