Java Pattern for Word without Spaces



我想知道一个单词的正则表达式是什么,我似乎可以在任何地方找到它?字符串我\正在尝试匹配"循环数字 + 5",我想提取"循环数字"部分。我不确定这样做的正则表达式是什么。

Pattern pattern = Pattern.compile("(loop-.*)");
Matcher matcher = pattern.matcher("5 * loop-num + 5");
if(matcher.find()){
    String extractedString = matcher.group(1);
    System.out.println(extractedString);
}

从这里我得到:"循环数字 + 5"

如果您真的打算使用正则表达式来匹配单词(仅包含字母的实体,可以选择用连字符拆分),则需要考虑以下正则表达式:

bpL+(?:-pL+)*b

查看正则表达式演示

解释

  • b - 前导词边界
  • pL+ - 1 个或多个 Unicode 字母
  • (?:-pL+)* - 零个或多个序列...
    • - - 文字连字符
    • pL+ - 1 个或多个 Unicode 字母
  • b - 尾随字边界

在爪哇中:

Pattern pattern = Pattern.compile("\b\pL+(?:-\pL+)*\b", Pattern.UNICODE_CHARACTER_CLASS);
Matcher matcher = pattern.matcher("5 * loop-num + 5");
if(matcher.find()){
    String extractedString = matcher.group(0);
    System.out.println(extractedString);
}

注意:如果单词可能包含数字(不在起始位置),您可以将bpLw*(?:-pLw*)*bPattern.UNICODE_CHARACTER_CLASS一起使用。在这里,w将匹配字母、数字和下划线。