剥去长度小于或大于6的所有数字

Mix*_*dis 1 java regex regex-group

大家好,祝你有个美好的一天.我想问一些愚蠢的问题,因为我正在努力寻找正确的模式.我想找到小于或大于长度6的所有数字字符.

我们来看看下面.例如,我有这个序列

12134 4aRt32212121a 11111111111 222222 asda383652re5
Run Code Online (Sandbox Code Playgroud)

我的解决方案是这个

\b[0-9]{1,5}\b|\b[0-9]{7,20}\b
Run Code Online (Sandbox Code Playgroud)

我得到的匹配就是这个

12134 11111111111
Run Code Online (Sandbox Code Playgroud)

我的问题是我的正则表达式与这里的任何数字都不匹配4aRt32212121a.我想要的比赛就是这个

 12134 4 32212121 11111111111 5
Run Code Online (Sandbox Code Playgroud)

由于长度数等于6,因此将从匹配中排除的数字为222222,383652

我使用这个Regex在线工具进行了测试.如果可能,你可以在这里做例子.我会非常感激任何帮助,并再次原谅我的愚蠢

Jac*_*ead 6

正如Eily在其他评论中提到的,第一个问题是\ b.这是单词边界的锚点,因此它与您建议的单词中的数字不匹配.

我的解决方案是删除\ b并确保你没有任何怪异添加负面的前瞻和负面的lookbehind以及搜索的结束和开始.

(?<!\d)(\d{1,5}|\d{7,})(?!\d)

编辑:意外键入{1,6}而不是{1,5}