嗨,大家好我有正确的正则表达式铸造表示法的问题。
O-O - King
O-O-O - Queen
我有以下代码
Pattern castlingKPattern = Pattern.compile("O-O");
Matcher castlingKMatch = castlingKPattern.matcher(pgn);
Pattern castlingQPattern = Pattern.compile("O-O-O");
Matcher castlingQMatch = castlingQPattern.matcher(pgn);
if (castlingKMatch.find()){
System.out.println("Castling King: "+ pgn);
}
}else if (castlingQMatch.find()){
System.out.println("Castling Queen: "+ pgn);
}
但是下面的代码继续转到第一个if if而不是第二个if语句。即使我将输入更改为应该转到CastlingQMatch的O-O-O或第二个if。 你能帮忙吗?感谢
答案 0 :(得分:1)
将第一个正则表达式限制为:
"(?<!O-)O-O(?!-O)"
(?!-O)
是下一个,则-O
为负面预测,表示匹配失败
如果(?!<O-)
位于文字前面,则O-
为负面反馈意味着匹配失败