私は現在、htmlファイル内のいくつかのコンテンツにマッチする正規表現に取り組んでいます。一例として、My Regexのパフォーマンスが遅く、誰が最適化できますか?
:
<h3>
{{wf-content-footer_support_title}}
FOOTER SUPPORT TITLE
{{./wf-content-footer_support_title}}
</h3>
または:
<h3>
{{wf-content-footer_support_title}}FOOTER SUPPORT TITLE{{./wf-content-footer_support_title}}
</h3>
現在、私は試合の少量のために働いて、次の正規表現を、持っています。 3つ以上の一致がある場合、正規表現は無限ループでハングアップします。研究の後、私の正規表現が悪い性能を持つことが分かりました。しかし、パフォーマンスを改善するためにそれを変更する方法はわかりません。
{{wf-content-(.+)}}(?:|\s+)(.+)(?:|\s+)+{{\.\/wf-content-.+}}
誰かが私のために最適化してくれることを願っています。
EDIT:私のコードの パート:
private static Regex _wfContentRegex = new Regex(@"{{wf-content-(.+)}}(?:|\s+)(.+)(?:|\s+)+{{\.\/wf-content-.+}}", RegexOptions.Compiled);
... ...
foreach (var htmlTemplate in htmlTemplates)
{
var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(htmlTemplate);
var mc = _wfContentRegex.Matches(htmlDocument.DocumentNode.InnerHtml);
foreach (Match match in mc)
{
var content = new Content
{
Key = match.Groups[1].Value,
Description = match.Groups[2].Value
};
if (ContentManager.GetContents().FirstOrDefault(m => m.Key.ToLower() == content.Key.ToLower()) == null)
{
AddContent(content);
}
}
}
@WiktorStribiżew彼はHTMLを解析していません。 – falstro
ありがとう、私はすでにそれを使用して、私は自分のコードで最初の投稿を編集しました。 – SP7
あなたの正規表現はそれほど複雑ではありません... –