我正在尝试解析从网络设备返回的字符串以查看是否有错误。
我正在使用的测试是如果接收到的字符串中没有单词'invalid',那么就没有错误。我不确定正则表达式是否正确。
Pattern noErrorsPattern = Pattern.compile("^(?!.*(invalid)).*$");
Matcher noErrorMatcher = noErrorsPattern.matcher(receivedDataString);
if (!noErrorMatcher.matches()) {
throw new Exception("input has error");
}
receivedDataString 中没有字符串“invalid”。我通过将它粘贴到编辑器并搜索它来检查它 - 它没有找到。然而,在调试器中单步执行,异常将被抛出。
-- 澄清 -- 我简化了问题描述,但这可能有点误导。详细信息:对于每个命令,我都有一个“FieldPattern”正则表达式来从返回的文本中提取数据字段,另一个“NoError”正则表达式来检查是否有错误。NoError 正则表达式可以为类似“添加新条目”之类的命令精确设置,因此如果找到此字符串,则操作确实成功。如果没有为命令指定,则字符串中不出现“无效”的正则表达式是默认的 NoError 模式。