このパターンはequalsに一致し、その後にオプションのスペースと@記号で囲まれた単語が続きます。
Pattern pattern = Pattern.compile("= ?@(.*)@");
Matcher matcher = pattern.matcher("=@WORD@");
if (matcher.matches()) {
System.out.println(matcher.group(1));
}
// Prints: "WORD"
あなたが達成したいタスクを私が誤解しない限り、後読みの必要性を理解することはできません。ただし、以下は機能するはずです。
Pattern pattern = Pattern.compile("(?<== ?)@(.*)@");
Matcher matcher = pattern.matcher("= @WORD@");
if (matcher.find()) {
System.out.println(matcher.group(1));
}
// Prints: "WORD"
次に、ネガティブパターンは次のように実行されます。
Pattern pattern = Pattern.compile("(?<!= ?)@(.*)@");
Matcher matcher = pattern.matcher("=@WORD@");
System.out.println(matcher.find());
// Prints: "false"