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

时间:2016-10-30 13:24:06

标签: java regex

当我写:" 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: Sample picture of wrong regex interpretation

我想输出两个独立的积分,如下所示: Desired regex interpretation  如何使用正则表达式来实现这一目标?

显然,我寻求一种可以使它适用于两件以上的想法。

1 个答案:

答案 0 :(得分:0)

您正在做很多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)