我想知道一个单词的正则表达式是什么,我似乎可以在任何地方找到它?字符串我试图匹配“Loop-num + 5”,我想提取“Loop-num”部分。我不确定正则表达式是做什么的。
sub.domain
从此我得到:“loop-num + 5”
答案 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
将匹配字母,数字和下划线。