去除所有长度小于或大于 6 的数字
strip all all of numerics with length less or greater than 6
大家好,祝你有愉快的一天。我想问一个愚蠢的问题,因为我正在努力寻找正确的模式。我想找到所有长度小于或大于 6 的数字字符。
下面一起来看看吧。例如我有这个序列
12134 4aRt32212121a 11111111111 222222 asda383652re5
我的解决方案是这样的
\b[0-9]{1,5}\b|\b[0-9]{7,20}\b
我匹配到的是这个
12134 11111111111
我的问题是我的正则表达式与此处 4aRt32212121a 中的任何数字都不匹配。我想要的匹配是这个
12134 4 32212121 11111111111 5
将被排除在匹配之外的数字为 222222,383652,因为长度数字等于 6
我用这个 Regex online tool 做了我的测试。如果 possible.i 非常感谢任何形式的帮助并再次原谅我的愚蠢,你可以在这里举个例子
\b
表示单词边界,即不在两个\w
字符之间的任何地方,其中\w
表示数字、字母或_。在 4aRt32212121a 中,3 出现在一个字母之后,因此 \b\d
无法匹配它。只需删除所有 \b
.
已编辑:由于您不想匹配 111111 中的 5 位数字,因此您需要边界条件。通过环视断言,您可以使用:
(?<!\d)(?:[0-9]{1,5}|[0-9]{7,20})(?!\d)
否则(您链接到的调试器不支持它们)您必须在匹配中包含行边界或字符:
(?:^|[^\d])(?:[0-9]{1,5}|[0-9]{7,20}) (?:$|[^\d])
正如 Eily 在其他评论中提到的,第一个问题是 \b。这是单词边界的锚点,因此它不会像您建议的那样匹配单词中的数字。
我的解决方案是删除 \b 并确保您不会得到任何奇怪的东西,添加负面前瞻和负面回顾以及搜索的结束和开始。
(?<!\d)(\d{1,5}|\d{7,})(?!\d)
编辑:不小心输入了 {1,6} 而不是 {1,5}
大家好,祝你有愉快的一天。我想问一个愚蠢的问题,因为我正在努力寻找正确的模式。我想找到所有长度小于或大于 6 的数字字符。
下面一起来看看吧。例如我有这个序列
12134 4aRt32212121a 11111111111 222222 asda383652re5
我的解决方案是这样的
\b[0-9]{1,5}\b|\b[0-9]{7,20}\b
我匹配到的是这个
12134 11111111111
我的问题是我的正则表达式与此处 4aRt32212121a 中的任何数字都不匹配。我想要的匹配是这个
12134 4 32212121 11111111111 5
将被排除在匹配之外的数字为 222222,383652,因为长度数字等于 6
我用这个 Regex online tool 做了我的测试。如果 possible.i 非常感谢任何形式的帮助并再次原谅我的愚蠢,你可以在这里举个例子
\b
表示单词边界,即不在两个\w
字符之间的任何地方,其中\w
表示数字、字母或_。在 4aRt32212121a 中,3 出现在一个字母之后,因此 \b\d
无法匹配它。只需删除所有 \b
.
已编辑:由于您不想匹配 111111 中的 5 位数字,因此您需要边界条件。通过环视断言,您可以使用:
(?<!\d)(?:[0-9]{1,5}|[0-9]{7,20})(?!\d)
否则(您链接到的调试器不支持它们)您必须在匹配中包含行边界或字符:
(?:^|[^\d])(?:[0-9]{1,5}|[0-9]{7,20}) (?:$|[^\d])
正如 Eily 在其他评论中提到的,第一个问题是 \b。这是单词边界的锚点,因此它不会像您建议的那样匹配单词中的数字。
我的解决方案是删除 \b 并确保您不会得到任何奇怪的东西,添加负面前瞻和负面回顾以及搜索的结束和开始。
(?<!\d)(\d{1,5}|\d{7,})(?!\d)
编辑:不小心输入了 {1,6} 而不是 {1,5}