我想从#以space.开头和结尾的字符串中获取单词。我试过使用它,Pattern.compile("#\\s*(\\w+)")但它不包含像'或这样的字符:。我想要只有模式匹配方法的解决方案。
2 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
我们可以尝试使用 pattern 进行匹配(?<=\\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
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
\s
is的反面\S
,所以你可以使用这样的正则表达式:
#\s*(\S+)
或者对于 Java:
Pattern.compile("#\\s*(\\S+)")
它将捕获任何不是空白的东西。
如果你想停在空格字符,而不是任何空白变化\S
来[^ ]
。在^
括号内意味着它将否定后,无论发生什么事。
Pattern.compile("#\\s*([^ ]+)")
添加回答
举报
0/150
提交
取消