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

Java 去除长度小于或大于6的所有数字,java,regex,regex-group,Java,Regex,Regex Group,大家好,祝你们有愉快的一天。我想问一个愚蠢的问题,因为我正在努力寻找正确的模式。我想查找长度小于或大于6的所有数字字符 让我们看看下面。例如,我有这个序列 12134 4aRt32212121a 11111111111 222222 asda383652re5 我的解决办法是 \b[0-9]{1,5}\b|\b[0-9]{7,20}\b 我得到的匹配结果是这个 12134 11111111111 我的问题是,我的正则表达式与4ART3221A中的任何数字都不匹配。我想要的是这一对 121

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

让我们看看下面。例如,我有这个序列

12134 4aRt32212121a 11111111111 222222 asda383652re5
我的解决办法是

\b[0-9]{1,5}\b|\b[0-9]{7,20}\b
我得到的匹配结果是这个

12134 11111111111
我的问题是,我的正则表达式与4ART3221A中的任何数字都不匹配。我想要的是这一对

 12134 4 32212121 11111111111 5
由于长度数字等于6,因此将排除匹配的数字为222222383652


我用这个做了测试。如果可能的话,你可以在这里举个例子。我将非常感谢任何形式的帮助,并再次原谅我的愚蠢

\b
表示单词边界,即不在两个
\w
字符之间的任何地方,其中
\w
表示数字、字母或。在4ART3221A中,3位于字母之后,因此
\b\d
无法匹配它。只需删除所有
\b

编辑:由于您不想匹配111111中的5位数字,因此需要边界条件。通过环视断言,您可以使用:

(?<!\d)(?:[0-9]{1,5}|[0-9]{7,20})(?!\d)

\b
表示单词边界,即不在两个
\w
字符之间的任何位置,其中
\w
表示数字、字母或。在4ART3221A中,3位于字母之后,因此
\b\d
无法匹配它。只需删除所有
\b

编辑:由于您不想匹配111111中的5位数字,因此需要边界条件。通过环视断言,您可以使用:

(?<!\d)(?:[0-9]{1,5}|[0-9]{7,20})(?!\d)

如其他评论中所述,第一个问题是\b。这是单词边界的锚点,因此它与您建议的单词中的数字不匹配

我的解决方案是删除\b,并确保不会出现任何奇怪的情况,添加负前瞻和负前瞻以及搜索的结束和开始


编辑:不小心键入了{1,6}而不是{1,5}

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

我的解决方案是删除\b,并确保不会出现任何奇怪的情况,添加负前瞻和负前瞻以及搜索的结束和开始



编辑:错误地键入了{1,6}而不是{1,5}

您使用的工具/编程语言是什么?您是提取以获得匹配列表,还是要替换其中任何一种?4ART3221A是否也匹配“4”?@sniperd
4
是所需的output@sniperd4ART322121将是比赛4是的,我有它想要的乌普图哈谢谢,咖啡因还没有开始:)您使用的工具/编程语言是什么?您是提取以获得匹配列表,还是要替换其中任何一种?4ART3221A是否也匹配“4”?@sniperd
4
处于所需状态output@sniperd4ART322121将是比赛4是的,我有它想要的乌普图哈谢谢,咖啡因还没有开始:)删除
\b
时,它是否会匹配(例如,作为六位数字一部分的五位数字)?(不是我的反对票,我认为你发现了问题,但解决方案还不够)是的,我在发帖后就考虑过了。我将编辑我的帖子,谢谢当删除
\b
时,它是否匹配,例如,一个五位数的数字是六位数的一部分?(不是我的反对票,我认为你发现了问题,但解决方案还不够)是的,我在发帖后就考虑过了。我会编辑我的帖子,谢谢你在网站上有一定程度的“代表”才能投票。但是你应该能够接受答案(复选标记),你能让它与java一起工作吗Exception@JacjPRead我让它工作,但这是你的想法,所以如果你有时间为其他可能需要帮助的人制定更详细的解决方案,我就不能把它作为答案发布(?将
6
更改为
5
@MixalisNavridis我认为你需要在网站上有一定程度的“代表”才能投票。但你应该能够接受答案(复选标记)我能让它与java一起工作吗?因为一些特殊的字符给了我Exception@JacjPRead我让它工作,但这是你的想法,所以如果你有时间为其他可能需要帮助的人提供更详细的解决方案,我就不能把它作为答案发布?