我们都知道如何使用正则表达式来查找字符串中的内容。但是,正则表达式至少在数学上不限于实际的String
和char[]
s;可以使用正则表达式来匹配int[]
中的子序列。但是,我似乎无法使用带有非字符strinr的正则表达式。有没有人知道这样的事情?
这主要是受到大量“阵列后续序列”的启发。在CodingBat等网站上看到类型问题。通常,我会将数组转换为字符串,因此我可以在其上使用正则表达式,例如我对Java > Warmup-2 > noTriples的解决方案
return Arrays.toString(nums).split("(\\d*+), \\1, \\1(?!\\d)").length == 1;
(我喜欢打高尔夫球)。
我考虑过像
这样的事情return new String(nums,0,nums.length).split("(.)\\1\\1").length == 1;
(这确实有效),但是人们不能使用文字值(例如,编译器将拒绝任何包含\u0000
- \u001F
的程序,除了一对),还有其他问题。
是否有人知道直接对整数数组进行模式匹配的方法?(使用某种正则表达式,或者甚至使用更受限制的语言?)
答案 0 :(得分:0)
Matcher类将CharSequence作为输入。如果你的整数都有两个字节或更少的值,那么你可以将int数组包装在CharSequence中。只需屏蔽charAt()方法中的高位。
否则,你将不得不深入研究Pattern和Matcher的源代码。这不是一项微不足道的事情。