我想知道一个单词的正则表达式是什么,我似乎可以在任何地方找到它?字符串我\正在尝试匹配"循环数字 + 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*)*b
与Pattern.UNICODE_CHARACTER_CLASS
一起使用。在这里,w
将匹配字母、数字和下划线。