首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

新手,求解正则表达式有关问题

2012-09-29 
新手,求解正则表达式问题Java codepublic class Snippet {public static void main(String[] args) throws

新手,求解正则表达式问题

Java code
public class Snippet {    public static void main(String[] args) throws UnsupportedEncodingException {        String a = new String("a\\");//匹配a\        System.out.println(a.matches("[a\\]"));//报错        System.out.println(a.matches("[\\u0041\\]"));//报错,这个是疯狂java讲义第339页给的正则匹配    }}

错误源代码:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 8
[\u0041\]
  ^
at java.util.regex.Pattern.error(Pattern.java:1713)
at java.util.regex.Pattern.clazz(Pattern.java:2254)
at java.util.regex.Pattern.sequence(Pattern.java:1818)
at java.util.regex.Pattern.expr(Pattern.java:1752)
at java.util.regex.Pattern.compile(Pattern.java:1460)
at java.util.regex.Pattern.<init>(Pattern.java:1133)
at java.util.regex.Pattern.compile(Pattern.java:823)
at java.util.regex.Pattern.matches(Pattern.java:928)
at java.lang.String.matches(String.java:2090)
at com.chenlong.Snippet.main(Snippet.java:9)

在疯狂java讲义这本书的第340页,说的匹配中文字符[\\u0041-\\u0056],
先说转义的错误, 怎么会是两个\\了,本来\u就是转义了, 而且中文这么多,怎么
范围才这点,请大家解答,不会是我买到盗版的书籍了吧。

[解决办法]
一对儿中括号匹配的是一个字符,正则表达式a\\匹配的是字符串a\,两个字符,所以中括号里放了匹配多个字符的正则当然就错了,你程序中的三句话都是这毛病
[解决办法]
String a = new String("a\\");//匹配a\
System.out.println(a.matches("[a\\]"));// \\]相当于匹配]所以 前面那个框没结尾,报错
System.out.println(a.matches("[\\u0041\\]"));//下面这个框跟上面道理一样的。
[解决办法]
String a = new String("\\");//这样就是对的
引号下面\\代表一个\
所以需要这样匹配"[\\\\]" 如果是指这种情况"[\\]"就会报错,跟我上面说的那种情况一样的错,把]搞丢了。
所以要得到一个\ 用这种"\\\\"或者这种"[\\\\\]"
[解决办法]
public class job
{
public static void main(String[]args)
{
 
String a = new String("\\");
System.out.println(a.matches("[\\\\]"));

}
}

热点排行