【发布时间】:2016-03-21 12:47:54
【问题描述】:
我对正则表达式非常陌生,我正在为一个对我的项目真正有帮助的小项目而苦苦挣扎。我想知道如何计算感叹号的(连续)序列组。例如,让我们考虑以下字符串
String s = "OMG!!!, i love Computers !!!! and this !!! is really good!"
这里的计数应该返回 3。我尝试了以下方法,但这与我想要的完全不同 public static int exclamation(String list) throws Exception{
String[] words = (list.split("\\s+"));
Pattern pattern = Pattern.compile("\\*?(!!)*\\b");
int count = 0;
for(String s:words)
{
Matcher matcher = pattern.matcher(s);
if(pattern.matcher(s) != null)
{
System.out.println(s);
}
}
return count;
}
【问题讨论】:
-
使用反向引用。
(!)\1+ -
你的预期输出是什么?
-
@AvinashRaj 那里的打印功能旨在通过尝试打印来查看我是否真的匹配正确的东西,但它所做的只是打印简单的单词(我正在一个巨大的数据集),不确定它是否忽略标点符号而只打印之前的单词,这显然是完全疯狂的
-
@Tushar 似乎有正确的答案,但我无法打印那些感叹号来查看我是否正确匹配它们