【发布时间】:2014-03-06 17:32:16
【问题描述】:
我正在解析一个 sgml 文件。每个条目都是这样的:
<key n=1>xzsd:test
<sk id=1 hi=1>test
<tag1>.............</tag1>
<tag2>.............</tag2>
................
</sk>
<sk id=2>test2
<tag1>.............</tag1>
<tag2>.............</tag2>
................
</sk>
</key>
我想用一些 HTML 标记替换 <key n=1>...</key>。我目前正在逐个标签替换标签,但只检索<key> 标签内的所有内容可能会更有效。
如何编译这段代码:
entry = Regex.Replace(entry, "<key .*?>.*</key>", "<div class='key'>$2<div>");//Only interested in the second match.
Regex skReg = new Regex(@"<sk...>", RegexOptions.Compiled);
foreach (Match ItemMatch in ItemRegex.Matches(entry))
{
//Do parsing of contents of each sk tag
}
sgml 没有任何换行符
【问题讨论】:
-
您愿意接受基于非正则表达式的解决方案吗?我想起了这个答案:stackoverflow.com/questions/1732348/…
-
怎么样?除了起始标签之外,没有什么是静态的
-
你的正则表达式不工作试试这个regex101.com/r/yK0mD4
-
有一个用于读取 SGML 数据的 C# 库可能比正则表达式方法更好:github.com/MindTouch/SGMLReader