正则表达式用于从国际象棋表示法中查找单元格位置

时间:2016-02-18 08:07:34

标签: java regex

我想使用正则表达式组从国际象棋移动符号中获取单元格位置。 例如:

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());
            }
        }

0 个答案:

没有答案