将正则表达式与数组匹配

时间:2014-01-16 21:22:50

标签: java regex arrays

我们都知道如何使用正则表达式来查找字符串中的内容。但是,正则表达式至少在数学上不限于实际的Stringchar[] 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的程序,除了一对),还有其他问题。

是否有人知道直接对整数数组进行模式匹配的方法?(使用某种正则表达式,或者甚至使用更受限制的语言?)

1 个答案:

答案 0 :(得分:0)

Matcher类将CharSequence作为输入。如果你的整数都有两个字节或更少的值,那么你可以将int数组包装在CharSequence中。只需屏蔽charAt()方法中的高位。

否则,你将不得不深入研究Pattern和Matcher的源代码。这不是一项微不足道的事情。