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

时间:2014-01-18 19:45:23

标签: regex

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

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

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

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

2 个答案:

答案 0 :(得分:1)

怎么样......

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

// upd

负面观察是你的解决方案,就像鲍里斯回答的那样。

答案 1 :(得分:1)

您可以使用负向lookbehind断言模式前面没有行开头标记(^):

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