簡體   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