如何使用正则表达式检查数字是否以特殊字符开头

时间:2012-01-09 05:12:03

标签: java regex

如果字符串以ab开头,我可以使用以下正则表达式。

        Pattern p = Pattern.compile("^(a|b)");
        Matcher m = p.matcher("0I am a string");
        boolean b = m.find();
        System.out.println("....output..."+b);

但我需要检查字符串是否以*^等特殊字符开头。在这种情况下,以下regexp会出现Pattern错误。

Pattern p = Pattern.compile("^(*|^)");
        Matcher m = p.matcher("0I am a string");
        boolean b = m.find();

        System.out.println("....output..."+b);

如何使用正则表达式检查号码是以*还是^开头

5 个答案:

答案 0 :(得分:3)

|*.[](){}?+^$这样的字符在正则表达式中具有特殊含义。使用[\^*](仅在[] ]-^(\*|\^)具有特殊含义),或者像{{1}}一样转义它们。

答案 1 :(得分:0)

*^是正则表达式中需要转义的特殊字符,因此您需要使用\来转义它。

有关详细信息,请参阅this link

答案 2 :(得分:0)

使用此:

"0I am a string".matches("[\\^*].*");

答案 3 :(得分:0)

您可以尝试使用'(\^|\*)[0-9]+'

由于^*都是正则表达式中的特殊字符,因此您需要将\放在它们之前。

如果您希望整个字符串必须与之匹配,请将正则表达式置于^$之间。

答案 4 :(得分:0)

感谢mathematical.coffee提供了很好的回复

最后,我找到了一个解决方案,使用^[*^]作为regexp来测试字符串是否包含*^

源代码

Pattern p = Pattern.compile("^[*^]");
        Matcher m = p.matcher("I am a string");
        boolean b = m.find();

        System.out.println("....output..."+b);