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の組み合わせを使用できます。私は正規表現の専門家ではありません。