正则表达式:交替字符/顺序数字

时间:2009-08-25 19:47:51

标签: java regex

我在java中寻找与以下模式匹配的正则表达式:

  1. 两个交替的数字或字母值示例:12121212或adadadad

  2. 至少有4位连续数字的数字或字母序列示例:cdefgh或123456

  3. 感谢

3 个答案:

答案 0 :(得分:2)

我认为正则表达式可能是模式2的错误工具。“所有数字”或“所有alpha”都很容易,但“顺序”要求很难表达。你可能最好写一个简单的循环来检查你的要求。

答案 1 :(得分:0)

正则表达式不是为解析这些模式而设计的。但是,你可能能够解决这个问题,虽然这很麻烦。

第二个可以相当容易地强制完成四个序列:

(abcd|bcde|cdef|...|wxyz|0123|1234|...|6789)

但这绝不包括5个序列和更高的序列。这将是令人讨厌的。

你可以为第一种情况做类似的事情,虽然这有点不合理,因为有26个字母+10个数字(我假设你只是为小写做这个),所以如果你想要任何交替对你的正则表达式需要36 * 35 = 1260种可能性。这有点长。 COULD 可以完成,但这是不可取的。

您的示例当然可以解析如下:

(12|ab)+

哪个是合理的。但是,如果您正在为任何数字/字母表配对寻找更通用的解决方案,则需要详尽地生成列表。

总之,最好的办法是不要使用正则表达式。它们并非旨在用于这些类型的搜索。

答案 2 :(得分:0)

对于第一个,如果你有一个SIGMA,这是你的字母表,你可以这样做:

(SIGMA SIGMA)+

这允许aaaaaa,但我不确定是否允许......