后台:我正在尝试从包含整个引用的页面生成引用列表,并用HTML替换引用标记。
我在C#工作
文字看起来像:
The dog ate 3 cats and felt ill <ref name="something">http://cateater.com</ref>
我想使用Regex.Replace方法替换所有<ref>
,将它们推入哈希,我以后可以将其作为引用列表呈现。
问题:看起来在替换操作期间运行代码的方法是使用一个接受Match对象的'MatchEvaluator Delegate',但似乎不能接受其他参数。
example on MSDN使用类变量来完成此任务,但我希望有一个更优雅的解决方案。
答案 0 :(得分:3)
由于您使用的是XML标记,因此源文档无法作为XML DOM处理吗?在这种情况下,使用XSLT比RegEx容易得多。
如果没有,那么可以通过使用匿名函数有效地使MatchEvaluator委托变为假名: -
MatchEvaluator evaluator = delegate(Match m)
{
// code to return replacement
// this code uses and modifies lookups
}
Dictionary<string, string> lookups = new Dictionary<string, string>();
sOutput = someRegex.Replace(sInput, evaluator);
答案 1 :(得分:0)
使用以下内容获取参考列表:
var srcmatches = Regex.Matches(src, "<ref .*?>(.*?)</ref>");
List<string> refs = srcmatches.OfType<Match>().Select(x => x.Groups[1].ToString()).ToList();
首先匹配<ref>
标记,然后查询标记的内容并将其转换为字符串列表。