在我的html内容中,我想用c#替换脚本标记之间存在的“italic”的所有“粗体”文本。
我在这里有两个选项来应用正则表达式 a)替换脚本标记之间的所有内容 b)在脚本标记结束之前替换所有
那么使用任何方法的正则表达式是什么?
答案 0 :(得分:0)
像这样(未经测试!):
String pattern = Regex.Escape(@"<script>") + @"(?<inner_text>.*@)" + Regex.Escape(@"</script>");
Regex rx = new Regex(pattern);
foreach (Match m in rx.Matches(input))
{
string captured = m.Groups["inner_text"];//maybe a .Value is missing?!
}
//OR:
rx.Replace(input,MyMatchEvaluator);
//...
string MyMatchEvaluator(Match m)
{
return @"<script>" + MyTransformingFunction(m.Groups["inner_text"]) + @"</script>";
}
更新: 我把非贪婪的旗子弄错了。不知何故,我认为它是'@',但事实上它是'?'。固定模式:
String pattern = Regex.Escape(@"<script>") + @"(?<inner_text>.*?)" + Regex.Escape(@"</script>");
您可以将'*'替换为'+',以仅匹配非空脚本标记。
更新#2:由于VisualStudio正则表达式“查找”,'@'在我脑海中 - 这是VisualStudio的“在文件中查找”的非贪婪版本的'*'