为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式字符类

正则表达式字符类

一只甜甜圈 2021-04-01 13:10:03
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,范围倒退。


查看完整回答
反对 回复 2021-04-21
  • 1 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信