String a = "77*b+7-77/98+6";String b[] = a.split("[*+-/]"); // works fineb[] = a.split("[+/- *]"); // gives pattern syntax exception because of " * "b[] = a.split("[*/+-]"); // works fineb[] = a.split("[-*]"); // works fine请帮我解决这个问题。
1 回答
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
在正则表达式中,方括号[]表示字符类。字符类可以包含两个字符,并用连字符分隔,a-z以表示字符范围。
这意味着,如果使用连字符,并且范围的任一端均无效,则这是无效的模式。在这种情况下,必须使用\\-Java对此连字符进行转义。
但是,如果在字符范围的开头或结尾使用连字符,则连字符不会被视为元字符-因为连字符不能是范围。因此您的其他模式有效,因为连字符已被有效地转义。
b[] = a.split("[*/+-]"); // works fine
^ at the end
b[] = a.split("[-*]"); // works fine
^ at the start
第一表达具有+-/,这是从有效范围+,以/在ASCII字符集,相当于文字字符+,-./。
错误的表达式具有/-,即范围从/到SPACE。SPACE是性格32,/是性格,47所以您的范围是47-32,范围倒退。
添加回答
举报
0/150
提交
取消