无法使用正则表达式

时间:2017-03-27 08:44:58

标签: java regex

你能帮我解决下面的Java正则表达式问题。我正在尝试制作2个正则表达式组,但最后一句话不能正确使用。

String str = "James Gosling was an Engineer";
String p = "^James\\s+(\\w+).*(\\w+)$";
Pattern ptrn = Pattern.compile(p);
Matcher m = ptrn.matcher(str);
while(m.find()){
    System.out.println(m.group(1) + " - "+m.group(2)) ; 
}

我的输出为: -

Gosling - r

但我期待

Gosling - Engineer

2 个答案:

答案 0 :(得分:2)

将您的正则表达式更新为:

 $('.pauseit').on('click', function() {
    $('.vid').each(function() {
      $( this ).YTPPause();
    })
 });

答案 1 :(得分:1)

您需要src/main/...使用String#matches转为.*(使用.*?量词的不情愿变体进行量化),以及*结束可以抓住尽可能多的单词字符:

(\w+)

请参阅Java demo

请注意,String str = "James Gosling was an Engineer"; String p = "James\\s+(\\w+).*?(\\w+)"; Pattern ptrn = Pattern.compile(p); Matcher m = ptrn.matcher(str); if(m.matches()){ System.out.println(m.group(1) + " - "+m.group(2)) ; } 已替换为while,因为整个输入应与if匹配,并且不再需要String#matches / ^个锚点。