我想从以#
开始并以space
结尾的字符串中获取单词。我尝试使用此Pattern.compile("#\\s*(\\w+)")
,但其中不包含'
或:
之类的字符。
我只希望使用模式匹配方法的解决方案。
答案 0 :(得分:1)
我们可以尝试使用模式(?<=\\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
注意:以上解决方案可能会给您带来一些极端的情况,即出现在主题标签末尾的标点符号。如果您不希望这样做,那么我们可以将正则表达式改写为只匹配肯定的某些特定字符,例如字母和数字。但是,也许这对您来说并不重要。
答案 1 :(得分:0)