2012-02-26 114 views
2

我有我的正则表达式的一个问题:正则表达式,从第提取字(多个空格)

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

我想要的格式,如这样的字符串正则表达式:

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

随着正则表达式,我得到的最后两个值的结果,但没有标记1 - 因为有一个以上的空白。但我想要他们三个!

我尝试了一些变化,但是毫无效果。

+0

你想除了第一个标签,或只是最后两个标签?你想包含'#'标签还是不包含? – ohaal 2012-02-26 15:46:40

+0

OUH有打字错误,对不起。我再次编辑。我想要所有3个标签,包括# – dadom85 2012-02-27 08:38:24

+0

您只需要在字符串末尾或字符串中的任何位置的所有标签?它总是3个标签,或者不同的数量?是否符合'#tag1'之前必须有2个或更多空格的标准才是有效匹配? – ohaal 2012-02-27 11:20:17

回答

2

这是从你的问题你真的是经过什么有点不清楚,所以我已经把一些简单的替代品:

要捕获所有标签的字符串中,我们可以使用一个回顾后:

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

要捕获所有的标签在字符串的结尾,我们可以使用一个前瞻:

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

如果在最后总是三个标签,有没有必要一个lookaround:

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

第二次为我工作。非常感谢你 !! – dadom85 2012-03-15 14:11:50