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