我想使用 java 正则表达式查找所有以“#”开头并以 space 或“.”结尾的单词。

I want to find all words using java regex, that starts with "#" and ends with space or "."

这是一个示例字符串

hi #myname, you  got #amount

我想使用 java regx 查找所有单词, 以 # 开头并以 space 或 . 结尾 例子 #myname,#amount

我尝试了以下正则表达式,但它不起作用。

String regx = "^#(\s+)";

这是正则表达式:"(#\w*?[ .])"

这条路应该是:

#(\w+)(?:[, .]|$)
  • # 按字面意思匹配 #
  • \w是一个至少有一个字母的单词
  • (?:) 是非捕获组
  • [, .]|$ 是一组结束字符,包括行尾 $

有关详细信息,请查看 Regex101

在Java中不要忘记用双\转义:

String str = "hi #myname, you  got #amount";
Matcher m = Pattern.compile("#(\w+)(?:[, .]|$)").matcher(str);
while (m.find()) {
   ...
}
String str = "hi #myname, you  got #amount";
Matcher m = Pattern.compile("\#(\w+)").matcher(str);