java - Java:如果找不到正则表达式,请执行某些操作
问题描述
我正在解析日志文件,并且在找到正则表达式时需要做一件事(将',TRUE'添加到变量,.csv,ArrayList)和其他事情(添加一个空槽,“,”或“,_ " 如果空槽不好),当找不到该正则表达式时。
每个日志文件可以解析 1-~200 个条目 - 因此正则表达式可以匹配多次。
我尝试了几个选项,要么在编译时出错(不喜欢针对字符串测试布尔值),没有发生可观察的操作,或者当找到正则表达式时,我得到了找不到正则表达式时的结果。
我需要一个变量、.csv 或 ArrayList 中的输出,所以如果找不到匹配项,那么我需要一个空的“,”,因为输出是一个预定义的表,所以列需要正确对齐。
我试过的组合:
if(!noBaseText.equals("No matching base data found"))
if(!noBaseText.equals("No matching base data found") == false)
if(noBaseText.equals("No matching base data found" != true))
if(noBaseText.isEmpty())
if(noBaseText.equals(""))
if(!noBaseText.equals(""))
if(noBaseText.equals("No matching base data found"))
'} else {' 和 '} else if (...) {' 与上面的组合,无论是嵌套 if/else(如下面的代码)还是作为 'else' 到 'if (baseMatcher.find( ))' 返回相同的结果。
代码片段:
Pattern noBase = Pattern.compile("(?<noBase>No matching base data found)");
try(corrReader)
{
while ((corrLine = corrReader.readLine())!=null)
{
corrText = corrLine.trim();
Matcher baseMatcher = noBase.matcher(corrText);
if (baseMatcher.find())
{
String noBaseText = baseMatcher.group("noBase");
if(!noBaseText.equals("No matching base data found"))
{
corrOutput += ",";
} else if(noBaseText.equals("No matching base data found")) {
corrOutput += ",TRUE";
} //end else
} //end if(baseMatcher)
} //end while(corrLine)
} //end try(corrReader)
匹配时我得到的输出:
AA-123-12345-SP1.SSF,真,
没有匹配时我得到的输出:
AA-123-12345-SP2.SSF,100,100,guug04314054.zip,
没有匹配时我需要得到的输出:
AA-123-12345-SP2.SSF,,100,100,guug04314054.zip,
当正则表达式匹配,并返回 ',TRUE' 时,将没有以下条目;当正则表达式不匹配并返回“,”时,将会有额外的条目。
解决方案
我不确定我是否正确,但是..如果您想检查模式是否为空,请执行以下操作:
if(noBase.pattern().isEmpty()) {
// do your stuff
}
推荐阅读
- ruby-on-rails - 如何测试模型实例方法?
- reactjs - 彩色标签的样式化组件
- always-encrypted - 我正在尝试在未用于分区表的列上的分区表上实现始终加密
- php - php中floatval的额外精度
- android - 错误:未编译的 PNG 文件作为参数传递。必须先编译成 .flat 文件
- javascript - 为什么这等于 True 并因此在 React 中渲染一个 div?
- python - 如何将 POS 标记函数应用于来自另一列 pandas 的句子中的字符串
- google-analytics - 如何使用 Google Global Site Tag gtag.js 屏蔽 IP 地址并强制使用 HTTPS?
- php - Unix时间戳不起作用
- spring - Angular 4.0 + Spring boot + Spring Security:TemplateInputException:解析模板“登录”时出错