IRCPRIVMSG文字列をマッハする正規表現を作成しようとしています。それは次のようなものです:
:nick!name@some.host.com PRIVMSG #channel :message body
だから私は次のコードを書いた:
Pattern pattern = Pattern.compile("^:.*\\sPRIVMSG\\s#.*\\s:");
Matcher matcher = pattern.matcher(msg);
if(matcher.matches()) {
System.out.println(msg);
}
それは動作しません。一致しませんでした。オンラインのJavaScriptテスターを使用して正規表現をテストすると、一致するものが得られました。
理由、機能しない理由を見つけようとしましたが、空白記号に問題があることがわかりました。次のパターンは私にいくつかの一致を与えるでしょう:
Pattern.compile("^:.*");
ただし、\sを含むパターンは次のようにはなりません。
Pattern.compile("^:.*\\s");
ややこしい。