我有一些需要使用 C# 修改的 HTML 内容。它在概念上很简单,但我不确定如何有效地做到这一点。内容包含多次出现的分隔数字,后跟一个空的锚标记。我需要获取分隔数字并将其插入到锚标记中的 JavaScript 函数调用中。例如
源字符串将包含如下内容:
%%1%%<a href="#"></a>
<p>A bunch of HTML markup</p>
%%2%%<a href="#"></a>
<p>Some more HTML markup</p>
我需要将其转换为:
<a href="#" onclick="DoSomething('1')></a>
<p>A bunch of HTML markup</p>
<a href="#" onclick="DoSomething('2')></a>
<p>Some more HTML markup</p>
%%\d+%% 出现的次数没有限制。我尝试编写正则表达式,希望可以使用 Replace 方法,但我不确定这是否可以用于每个组的多个实例。这是我所拥有的:
%%(?<LinkID>\d+)%%(?<LinkStart><a[\s\S]*?)(?:(?<LinkEnd>>[\s\S]*?)(?=%%\d+|$))
// %%(?<LinkID>\d+)%% Match a number surrounded by %% and put the number in a group named LinkID
// (?<LinkStart><a[\s\S]*?) Match <a followed by any characters until next match (non greedy), in a group named LinkStart
// (?: Logical grouping that does not get captured
// (?<LinkEnd>>[\s\S]*?) Match > followed by any characters until next match, in a group named LinkEnd
// (?=%%\d+%%|$) Where the former LinkEnd group is followed by another instance of a delimited number or the end of the string. (I don't think this is working as I intended.)
也许可以使用一些正则表达式操作和 String.Format 的组合。我不是正则表达式方面的专家。