我希望从#
开头并以space
结尾的字符串中获取单词。我尝试过使用这个Pattern.compile("#\\s*(\\w+)")
,但它不包括像'
或:
这样的字符。
我想要只有模式匹配方法的解决方案。
我们可以尝试使用模式(?<=\\s|^)#\\S+
匹配,它匹配任何以#
开头的单词,后跟任意数量的非空白字符。
String line = "Here is a #hashtag and here is #another has tag.";
String pattern = "(?<=\\s|^)#\\S+";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
while (m.find()) {
System.out.println(m.group(0));
}
#hashtag
#another
注意:上面的解决方案可能会为您提供标注符号的边缘情况,该标点符号出现在主题标签的末尾。如果您不想这样,那么我们可以将正则表达式重新定义为仅匹配正的某些字符,例如字母和数字。但是,也许这不是你的问题。