从正常表达式开始,以#开头提取单词(多个空格)

时间:2012-02-26 15:02:43

标签: java android regex

我的正则表达式有问题:

String regex = "(?<=[\\s])#\\w+\\s";

我想要一个格式化字符串的正则表达式:

"This is a Text     #tag1 #tag2 #tag3"

使用正则表达式,我得到最后两个值作为结果而不是tag1 - 因为有多个空格。但我想要所有3个人!

我尝试了一些变化,但没有任何效果。

2 个答案:

答案 0 :(得分:2)

使用此正则表达式:

(?<=(^|\\S)\\s)#\\w+(?=\\s|$)

Here's a demo.

答案 1 :(得分:2)

你的问题有点不清楚你真正追求的是什么,所以我提出了一些简单的选择:

要捕获字符串中的所有标记,我们可以使用lookbehind:

((?<=\\s|^)#\\w+)

要捕获字符串末尾的所有标记,我们可以使用前瞻:

(#\\w+(?=\\s#)|#\\w+$)

如果最后总是有三个标签,则无需查看:

(#\\w+)\s(#\\w+)\s(#\\w+)$