Java:在解析字符串时,忽略括号中的内容

Java:在解析字符串时,忽略括号中的内容,java,Java,我有一个方法,它是在一个条件字符串中,如果逻辑运算符前后没有空格,它就会抛出错误。我有一个问题,例如,如果它发现一个像“更多”或它发现“或”它给出了错误这样的词。这是一个示例,下面是我的代码 条件:(da_cargue_hechos_mora_abonados)和s(da_cliente_diario_scl)和s(da_e_abonado_diario_pos)和s(da_e_abonado_diario_pre)和s(da_dim_situacion_scl)和s(da_dim_of ici

我有一个方法,它是在一个条件字符串中,如果逻辑运算符前后没有空格,它就会抛出错误。我有一个问题,例如,如果它发现一个像“更多”或它发现“或”它给出了错误这样的词。这是一个示例,下面是我的代码

条件:(
da_cargue_hechos_mora_abonados)和s(da_cliente_diario_scl)和s(da_e_abonado_diario_pos)和s(da_e_abonado_diario_pre)和s(da_dim_situacion_scl)和s(da_dim_of icina_scl)


不要使用正则表达式来解析“条件表达式”,特别是如果您允许嵌套。正则表达式不适用于此。使用正则表达式解析正则语言。对于非常规语言,请使用真正的解析器生成器,例如ANTLR。

您能稍微澄清一下您的问题吗?您可以使用\(*\)查找任何带有括号的字符或字符串。告诉我们它抛出了什么错误(以及堆栈跟踪),并给我们一些示例,说明它在何处抛出此错误,以及它在何处给出了不正确的输出,以及您希望输出的内容(并将其单独放置,而不是作为句子的一部分)。是的,我只在条件短语中查找逻辑操作数(and、or、&&、&、&、&,等等)。但程序无法判断例如“or”是操作数还是单词的一部分,比如“mora”。我只是想忽略支票上的东西。现在清楚了吗?看起来OP并没有试图解析条件。他想要的只是一些粗略的预验证,检查简单的常见错误。
Code:

 private static Job checkSpacesInCondition(Job job) {
String condition = null;
condition = job.getCondition();

// If null, no check needed
if (condition != null) {
    condition = condition.toLowerCase();
    condition = condition.replaceAll("&&", "and");
    condition = condition.replaceAll("&", "and");

    for (String word : CONDITION_OPERATORS) {
    Pattern logicalPattern = Pattern.compile("\\S" + word + "|"
        + word + "\\S");
    Matcher logicalMatcher = logicalPattern.matcher(condition);
    boolean foundNoSpace = logicalMatcher.find();
    if (foundNoSpace) {
        job.addWarning(JobWarning.SPACES_AFTER_LOGICAL_OPERATOR);
    }
    }
}

return job;
}