我想使用正则表达式组从国际象棋移动符号中获取单元格位置。 例如:
f2-f4 -> group 1 = f2, group 2 = f4
Bf8xd6 -> group 1 = f8, group 2 = d6
Qg5xg3+ -> group 1 = g5, group 2 = g3
Bd6xg3# -> group 1 = d6, group 2 = g3
我想出了以下正则表达式:
"[NQKB]?(\w{1,2})[-x](\w{1,2})[+#]?"
这个正则表达式在在线正则表达式测试程序中运行良好...但是当我作为junit测试运行它时它没有按预期工作。这是java或模式的问题吗?
这是我用来测试的代码。它仅输出“e2-e4”作为组。
@Test
public void testRegex(){
String pattern = "[NQKB]?(\\w{1,2})[-x](\\w{1,2})[\\+#]?";
Pattern patt = Pattern.compile(pattern);
Matcher matcher = patt.matcher("e2-e4");
while(matcher.find()){
System.out.println(matcher.group());
}
}