无法在java中使用此regex表达式提取字符串

Udd*_*uri 0 java regex

我有一个字符串,其第一个字符是"^".我想提取没有这个字符的字符串.例如:"^煤"应该变成"煤".以下是我写的代码,但我不知道为什么它不起作用.

public void RegEx(String s1){
        System.out.println(s1.substring(0,1));  //to check if i am ok.
        if((s1.substring(0,1)).equals("^")){
            Pattern p = Pattern.compile("^");
            String[] extracted = p.split(s1);
            for(String s: extracted){
                System.out.println(s);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

s1 ="^煤炭".输出="^煤".

Erw*_*idt 5

^角色在正则表达式中具有特殊含义,因此您需要将其转义:"\\^".

但正则表达式不是最有效的方法.只需使用substring:

if (s1.startsWith("^")) {
    s1 = s1.substring(1);
}
System.out.println(s1);
Run Code Online (Sandbox Code Playgroud)

注意:如上所示,您还可以使用它startsWith来轻松检查字符串是否以其他字符串开头.