我正在用正则表达式构建一个简单的twitter用户提到查找器。JAVA匹配组
public static Set<String> getMentionedUsers(List<Tweet> tweets) {
Set<String> mentionedUsers = new TreeSet<>();
String regex = "(?<=^|(?<=[^a-zA-Z0-9-_\\\\.]))@([A-Za-z][A-Za-z0-9_]+)";
for(Tweet tweet : tweets){
Matcher matcher = Pattern.compile(regex).matcher(tweet.getText().toLowerCase());
if(matcher.find()) {
mentionedUsers.add(matcher.group(0));
}
}
return mentionedUsers;
}
而且它未能找到匹配,如果表达式为文本例如结束“@格洛弗告诉我@GREG”它只返回“@格洛弗”。
您是否记住group(0)是您的正则表达式的完整匹配,而group(1)将会是您在正则表达式中定义的第一个捕获组内的内容? –