Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
625 views
in Technique[技术] by (71.8m points)

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

This is a sample string

hi #myname, you  got #amount

I want to find all words using java regx, that starts with # and ends with space or . example #myname,#amount

I tried the following Regex, but it doesn't work.

String regx = "^#(\s+)";
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This one should be the way:

#(w+)(?:[, .]|$)
  • # matches # literally
  • w is a word with at least one letter
  • (?:) is non-capturing group
  • [, .]|$ is set of ending characters including the end of line $

For more information check out Regex101.

In Java don't forget to escape with double \:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...