Pattern r = Pattern.compile("(\\w+)\\s+(\\w+)\\s+(\\w+)\\s*");
Matcher m = r.matcher(line);
if (m.find()) {
System.out.println("Found: " + m.group(2));
} else {
System.out.println("Not found");
}
当我使用它时:
HEY_YO NICE GUYHERE
显示输出:未找到。 如何获得带下划线的字符串? (_)
输入:
HEY_YO NICE GUYHERE
我想输出:
Found: HEY_YO
答案 0 :(得分:2)
我认为您没有传递&#34; HEY_YO NICE GUYHERE&#34; 作为输入,因为对于此输入,您的代码将生成&#34; Found:NICE&#34; < / strong>作为输出。获得您想要的输出 取代
System.out.println("Found: " + m.group(2));
与
System.out.println("Found: " + m.group(1));
答案 1 :(得分:1)
使用matcher.find()
时,您只能指定要捕获的内容:
public static void main(String[] args) {
String line = "HEY_YO NICE GUYHERE";
Pattern r = Pattern.compile("[a-zA-Z]+_[a-zA-Z]+");
Matcher m = r.matcher(line);
if (m.find()) {
System.out.println("Found: " + m.group(0));
} else {
System.out.println("Not found");
}
}
O / P:
Found: HEY_YO