Dig*_*gao 5 java regex qregularexpression
我需要一些给出以下字符串的正则表达式:
"test test3 t3st test: word%5 test! testing t[st"
Run Code Online (Sandbox Code Playgroud)
将只匹配az字符中的单词:
应该匹配:测试测试
不应该匹配:test3 t3st测试:单词%5测试!吨[ST
我试过([A-Za-z])\ w +但是单词%5不应该匹配.
您可以使用
String patt = "(?<!\\S)\\p{Alpha}+(?!\\S)";
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示。
它将匹配 1 个或多个用空格或字符串位置的开头/结尾括起来的字母。替代模式是(?<!\S)[a-zA-Z]+(?!\S)(与上面的相同)或(?<!\S)\p{L}+(?!\S)(如果您还想匹配所有 Unicode 字母)。
细节:
(?<!\\S)- 如果当前位置左侧紧邻非空白字符,则会导致匹配失败的负向后查找\\p{Alpha}+- 1 个或多个 ASCII 字母(与 相同[a-zA-Z]+,但如果使用Pattern.UNICODE_CHARACTER_CLASS修饰符标志,\p{Alpha}将能够匹配 Unicode 字母)(?!\\S)- 如果当前位置右侧紧邻非空白字符,则会导致匹配失败的负前瞻。查看Java 演示:
String s = "test test3 t3st test: word%5 test! testing t[st";
Pattern pattern = Pattern.compile("(?<!\\S)\\p{Alpha}+(?!\\S)");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println(matcher.group(0));
}
Run Code Online (Sandbox Code Playgroud)
输出:test和testing.