你能帮我解决下面的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
答案 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
/ ^
个锚点。