跳过第一个字符正则表达式



我目前正在使用以下代码从数组中的字符串中删除某些字符

myArray[x] = myArray[x].replaceAll("[aeiou]","");

这工作正常,但我需要忽略字符串的第一个字符,例如,如果数组元素是 Alan,它将被剥离为 Aln。

我不确定使用 replaceAll 是否是最好的方法,但我能想到的唯一另一种方法是删除第一个字符,将上面的正则表达式应用于字符串,重新附加字符,然后插入回数组,这似乎是一种冗长的方法。

您可以使用负回溯来断言模式前面没有行开始标记 ( ^ ):

public static void main(String[] args) throws Exception {
    final String[] input = {"abe", "bae"};
    for(final String s: input) {
        System.out.println(s.replaceAll("(?<!^)[aeiou]", ""));
    }
}

输出:

ab
b

像..

myArray[x] = myArray[x].replaceAll("(^.)[aeiou]", "\1");

更新

消极的回头看是你的解决方案,就像鲍里斯回答的那样。

最新更新