我有一个递归的 html 文本,例如:
string html = "<input id=\"txt0\" value=\"hello\"></input>some undefined text<input id=\"txt1\" value=\"world\"></input>";
可以重复 n 次(在示例中 n=2),但 n 是一个未知的变量数。
我想使用正则表达式将“value”属性中的所有文本(在示例“hello”和“world”中)替换为数组中的文本。
Regex rg = new Regex(which pattern?, RegexOptions.IgnoreCase);
int count= rg.Split(html).Length - 1; // in the example count = 2
for (int i = 0; i < count; i++)
{
html= rg.Replace(html, @"value=""" + myarray[i] + @""">", 1);
}
我的问题是我找不到正确的正则表达式模式来进行这些替换。
如果我使用类似的东西:
Regex rg = new Regex(@"value="".*""", RegexOptions.IgnoreCase);
int count= rg.Split(html).Length - 1;
for (int i = 0; i < count; i++)
{
html= rg.Replace(html, @"value=""" + myarray[i] + @"""", 1);
}
我得到像
<input id="txt0" value="lorem ipsum"></input>
因为 .* 在模式中包含额外的字符,而我需要它停止直到下一个
'<input'
发生。
结果应该是这样的:
<input id="txt0" value="lorem ipsum"></input>some undefined text<input id="txt1" value="another text"></input>
非常感谢您的建议或帮助。谢谢!