繁体   English   中英

Java正则表达式模式过度匹配(模式匹配一​​个序列,而不是两个)

[英]Java regex pattern overmatching(Pattern matches one sequence instead of two)

当我写:“ integralfrom1to10ofx ^ 2)+ integralfrom1to10ofx ^ 3)”时,

我期待我的正则表达式:

// INTEGRAL BASIC
Pattern integralFinalPattern = Pattern.compile("integralfrom(.*)to(.*)of(.*)\\)");
Matcher integralFinalMatcher = integralFinalPattern.matcher(regexDedicatedString);
if(integralFinalMatcher.find()){
    String integral_user_input = integralFinalMatcher.group(0);
    String integral_lower_index = integralFinalMatcher.group(1);
    String integral_upper_index = integralFinalMatcher.group(2);
    String integral_formula = integralFinalMatcher.group(3);
    String ultimateLatexIntegral = "(\\int_{"+ integral_lower_index
                +"}^{"+ integral_upper_index +"} " + integral_formula + ")";

    mathFormula = mathFormula.replace(integral_user_input, ultimateLatexIntegral);
}

分别匹配这两个字符串,但现在将其解释为一个。 结果,我得到了以下乳胶SVG: 错误的正则表达式解释的示例图片

我希望输出带有两个单独的积分,例如: 所需的正则表达式解释 我如何使用正则表达式实现这一目标?

显然,我正在寻找一个想法,使它可以工作两个以上。

您正在做Matcher类可以为您完成的许多工作。 看看这个:

Pattern p = Pattern.compile("integralfrom(?<upper>.*?)to(?<lower>.*?)of(?<formula>.*?)\\)");
Matcher m = p.matcher(subject);
result = m.replaceAll("\\\\int_{${upper}}^{${lower}} (${formula})");

输入"integralfrom1to10ofx^2)+integralfrom1to10ofx^3)"的结果是:

\int_{1}^{10} (x^2)+\int_{1}^{10} (x^3)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM