我想通過函數標籤解析以下文本正則表達式。正則表達式嵌套標籤
Anwers: <function>2+2
<function>1+3</function>
</function>.
Thanks for your time.
<function>sayGoodbye()
<function>10*10</function>
writeYourName()
</function>
下面是應該改變給定文本遞歸方法:
答案:44。 謝謝你的時間。 再見100雷克斯。
private static readonly string TagFormulaStart = "<function>";
private static readonly string TagFormulaEnd = "</function>";
public static string Calculate(string formula)
{
var pattern = string.Format("{0}(((.|\r|\n)*?)){1}", TagFormulaStart, TagFormulaEnd);
var matches = Regex.Matches(formula, pattern);
if (matches.Count == 0)
{
return formula;
}
else
{
var firstAppearanceOfTAG = matches[0].ToString();
var formulaToCalculate = firstAppearanceOfTAG.Replace(TagFormulaStart, string.Empty).Replace(TagFormulaEnd, string.Empty);
var result = BgProcessorLib.Evaluator.EvaluateString(formulaToCalculate, null, false);
formula = formula.Replace(firstAppearanceOfTAG, result);
return Calculate(formula);
}
}
的問題是,我的正則表達式/<function>(((.|\r|\n)*?))<\/function>/igm
嵌套的標籤的情況下,將在功能標籤結束的第一次出現停止。
我附上了一張照片,使其更清晰。
如果您使用C#並使用.NET正則表達式,則在僅支持JS正則表達式的站點上測試正則表達式毫無意義。 –
您確定要用正則表達式解析XML嗎?有很多準備好的「輪子」,調用XML解析器。 –
@NikolayProkopyev它不是一個XML。 – POIR