ネットワークデバイスから返された文字列を解析して、エラーがあるかどうかを確認しようとしています。
私が使用しているテストは、受け取った文字列に「invalid」という単語がない場合、エラーは発生しません。正規表現が正しいかどうかはわかりません。
Pattern noErrorsPattern = Pattern.compile("^(?!.*(invalid)).*$");
Matcher noErrorMatcher = noErrorsPattern.matcher(receivedDataString);
if (!noErrorMatcher.matches()) {
throw new Exception("input has error");
}
receiveDataStringには、文字列'invalid'が含まれていません。エディターに貼り付けて検索して確認しましたが、見つかりません。ただし、デバッガーをステップスルーすると、例外がスローされます。
-説明-問題の説明を簡略化しましたが、少し誤解を招いた可能性があります。詳細:コマンドごとに、返されたテキストからデータフィールドを抽出するための「FieldPattern」正規表現と、エラーが発生したかどうかを確認するための別の「NoError」正規表現があります。NoError正規表現は、「新しいエントリが追加されました」などのコマンドに対して正確に設定できるため、この文字列が見つかった場合、操作は成功しました。コマンドに何も指定されていない場合、文字列に「invalid」が出現しない正規表現は、デフォルトのNoErrorパターンです。