用于匹配#<string> vs <string> </string> </string>的Java正则表达式

时间:2015-02-13 12:17:48

标签: java regex match

我有一个字符串“Waiting for match #indvspak and #indvsaus”,并希望单独匹配字符串"#indvspak""#indvsaus"。  我正在使用以下正则表达式(^|)#.*vs.+?\s\b。但它匹配从哈希符号开始的整个字符串。如何实现我的要求请帮助。

3 个答案:

答案 0 :(得分:4)

我想要匹配以#开头包含vs的字符串,并且整个字符串必须以非空格字符开头。

"(?<!\\S)#\\S*vs\\S+"

(?<!\\S)否定后卫声称该匹配不会以非空格字符开头。

代码:

String s = "Waiting for match #indvspak and #indvsaus";
Matcher m = Pattern.compile("(?<!\\S)#\\S*vs\\S+").matcher(s);
while(m.find())
{
    System.out.println(m.group());
}

输出:

#indvspak
#indvsaus

答案 1 :(得分:0)

你需要这个正则表达式:

#[^\\s]+

它匹配(包括)#之后的任何内容,但不匹配空格。

编辑:

正如@AvinashRaj建议的那样,如果你想确保主题标签中出现“vs”,你应该使用负面的背后隐藏。

我强烈建议您浏览String API,有很多方法可以帮助您解决问题。

答案 2 :(得分:0)

<强> EDITED

(从其他答案评论中复制)

使用此:

"(?<!\\B)#\\w+vs\\o/\S#vas\\S-[]"

容易...