没有空格的Word的Java模式

时间:2016-01-17 21:55:38

标签: java regex string pattern-matching

我想知道一个单词的正则表达式是什么,我似乎可以在任何地方找到它?字符串我试图匹配“Loop-num + 5”,我想提取“Loop-num”部分。我不确定正则表达式是做什么的。

sub.domain

从此我得到:“loop-num + 5”

1 个答案:

答案 0 :(得分:2)

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

\b\pL+(?:-\pL+)*\b

请参阅regex demo

解释

  • \b - 领先的字边界
  • \pL+ - 一个或多个Unicode字母
  • (?:-\pL+)* - 零个或多个序列......
    • - - 字面连字符
    • \pL+ - 一个或多个Unicode字母
  • \b - 尾随字边界

Java中:

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

注意:如果字词可能包含数字(不在起始位置),则可以\b\pL\w*(?:-\pL\w*)*\b使用Pattern.UNICODE_CHARACTER_CLASS。在这里,\w将匹配字母,数字和下划线。