2012-01-09 43 views
0

使用以下正则表达式可以得到一个字符串是否以ab开头。如何检查一个数字是否以特殊字符开始使用正则表达式

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

但我需要检查,如果字符串以一些特殊的字符,如*^等。在这种情况下,以下的正则表达式给出错误模式启动。

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

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

如何检查是否一个数*^使用正则表达式

+1

试“^ [* ^]”.....,里面pattern.compile – prongs 2012-01-09 05:14:09

+0

你需要转义这些字符,也是很好的使用java中的模式l ike this: ** Instantiation ** 'private Matcher matcher; private final Pattern regexPattern = Pattern.compile(pattern);如果(matcher.reset(charBuffer).find()){//匹配模式。} – 2012-01-09 05:19:55

回答

0

感谢mathematical.coffee的漂亮响应

最后,我找到了一个解决方案,通过使用^[*^]作为正则表达式来测试一个字符串是否包含*^

源代码

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

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

字符,如|*.[](){}?+^$开头有正则表达式的特殊含义。使用[\^*](在[]内只有]-有特殊含义),或者像^(\*|\^)那样转义它们。

+0

如果我使用[^*],那么它会给出错误的结果。它给reslut为真正的字符串,不开始与*或^也 – 2012-01-09 05:27:51

+0

我试过Pattern p = Pattern.compile(“[^ *]”); \t \t Matcher m = p.matcher(“5我是一个字符串”); \t \t boolean b = m.find(); \t \t System.out。的println( “....输出...” + B); – 2012-01-09 05:28:17

+0

正则表达式'^ [^ *]'测试一个字符串是以“*”还是“^”开头。字符串'5我是一个字符串'显然不是以'*'或'^'开始的。 – 2012-01-09 06:09:42

0

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

请参阅this link了解更多信息。

0

使用此:

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

您可以尝试'(\^|\*)[0-9]+'为宗旨。

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

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

相关问题