gpt4 book ai didi

java - 正则表达式仅捕获没有数字或符号的单词

转载 作者:搜寻专家 更新时间:2023-10-31 20:08:54 24 4
gpt4 key购买 nike

我需要一些给定以下字符串的正则表达式:

"test test3 t3st test: word%5 test! testing t[st"

将只匹配 a-z 字符中的单词:

应该匹配:test测试

不应匹配:test3 t3st 测试:word%5 测试! t[st

我试过了([A-Za-z])\w+但 word%5 不应匹配。

最佳答案

你可以使用

String patt = "(?<!\\S)\\p{Alpha}+(?!\\S)";

参见 regex demo .

它将匹配 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 demo :

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));
}

输出:testtesting .

关于java - 正则表达式仅捕获没有数字或符号的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45239645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com