字符串拆分,包括重音字符的单词

Jva*_*vam 13 java regex

我正在使用这个正则表达式:

x.split("[^a-zA-Z0-9']+");
Run Code Online (Sandbox Code Playgroud)

这将返回带有字母和/或数字的字符串数组.

如果我用这个:

String name = "CEN01_Automated_TestCase.java";
String[] names = name.Split.split("[^a-zA-Z0-9']+");
Run Code Online (Sandbox Code Playgroud)

我有:

CEN01
Automated
TestCase
Java
Run Code Online (Sandbox Code Playgroud)

但如果我用这个:

String name = "CEN01_Automação_Caso_Teste.java";
String[] names = name.Split.split("[^a-zA-Z0-9']+");
Run Code Online (Sandbox Code Playgroud)

我有:

CEN01
Automa
o
Caso
Teste
Java
Run Code Online (Sandbox Code Playgroud)

如何修改此正则表达式以包含重音字符?(á,ã,õ等......)

Psh*_*emo 10

来自http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

行为类似于方法的类别(已弃用的除外)可通过指定属性具有名称的相同语法获得.java.lang.Character boolean ismethodname\p{prop}javamethodname

由于Characterclass包含isAlphabetic您可以使用的方法

name.split("[^\\p{IsAlphabetic}0-9']+");
Run Code Online (Sandbox Code Playgroud)

你也可以使用

name.split("(?U)[^\\p{Alpha}0-9']+");
Run Code Online (Sandbox Code Playgroud)

但是你需要使用UNICODE_CHARACTER_CLASS可以通过(?U)在正则表达式中添加来使用的标志.