我试图在空格和一些特定的特殊字符上拆分字符串.
鉴于字符串"john - &+ $?.@ boy"我想得到数组:
array[0]="john";
array[1]="boy";
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几个正则表达式,并没有在哪里.这是我目前的刺:
String[] terms = uglString.split("\\s+|[\\-\\+\\$\\?\\.@&].*");
Run Code Online (Sandbox Code Playgroud)
这保留了"约翰"而不是"男孩".任何人都能得到我剩下的这个吗?
只需使用:
String[] terms = input.split("[\\s@&.?$+-]+");
Run Code Online (Sandbox Code Playgroud)
你可以把短手字符类字符类(注意内\s),而且大多数元字符失去其含义的字符类中,除[,],-,&,\.但是,&只有在成对时才有意义&&,-如果放在字符类的开头或结尾,则将其视为文字字符.
其他语言可能有不同的规则来解析模式,但规则-适用于大多数引擎.
正如@Sean Patrick Floyd在他的回答中提到的,重要的是归结为定义一个单词的构成.\w在Java中相当于[a-zA-Z0-9_](英文字母大写和小写,数字和下划线),因此,\W由所有其他字符组成.如果要考虑Unicode字母和数字,可能需要查看Unicode字符类.