替换匹配正则表达式与锚标记?

时间:2015-12-26 05:23:41

标签: html regex html5 c#-4.0 html-agility-pack

使用Regex时遇到问题。我有一个html文档,当它匹配条件时会创建一个锚链接。

示例html:

  

CăncứLuậtTổchứcHÖNDvàUBNDngày26/11/2003;

     

CăncứNghịđịnhsố 63/2010 /NĐ-CP ngày08/ 6 /2010củaChínhphủvề   kiểmsoátthủtụchànhchính;

     

CăncứQuyếtđịnhsố 165/2011 /QĐ-UBND ngày06/ 5 /2011củaUBNDtỉnh   banhànhQuyđịnhkiểmsoátthủtụchànhchínhtrênđịabàntỉnh;

     

CăncứQuyếtđịnhsố 278/2011 /QĐ-UBND ngày02/ 8 /2011củaUBNDtỉnh   banhànhQuychếphốihợpthựchiệnthốngkê,côngbố,côngkhaithủ   tụchànhchínhvàtiếpnhận,xửlýphảnánh,kiếnnghịcủacaánhân,tổ   chứcvềquyđịnhhànhchínhtrênđịabàntỉnh;

     

XétđềnghịcủaGiámđốcSởCôngThươngtạiTờtrìnhsố    304 / TTr-SCT ngày29tháng5năm2013

我希望匹配这些粗体文本并从中创建锚点链接。如果有,请尝试忽略。链接示例<a href="/tags?query=63/2010/NĐ-CP">63/2010/NĐ-CP</a>

var matchLegals = new Regex(@"(?:[\d]+\/?)\d+\/[a-z\dA-Z_ÀÁÂÃÈÉÊÌÍÒÓÔÕÙÚĂĐĨŨƠàáâãèéêìíòóôõùúăđĩũơƯĂẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼỀỀỂưăạảấầẩẫậắằẳẵặẹẻẽềềểỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪễệỉịọỏốồổỗộớờởỡợụủứừỬỮỰỲỴÝỶỸửữựỳỵỷỹ\-]+", RegexOptions.Compiled);

            var doc = new HtmlDocument();
            doc.LoadHtml(htmlString);

                var allElements = doc.DocumentNode.SelectSingleNode("//div[@class='main-content']").Descendants();
            foreach (var node in allElements)
            {
                var matches = matchLegals.Matches(node.InnerHtml);

                foreach (Match m in matches)
                {
                    var k = m.Value;
                   //dont know what to do
                }

            }

我能做什么? 非常感谢。

3 个答案:

答案 0 :(得分:1)

我认为你的正则表达式是正常的并且有效。另一个假设是node.InnerHtml不包含任何已包含任何潜在匹配的<a>标记。

在这种情况下,它就像做这样的事情一样简单:

node.InnerHtml = Regex.Replace(node.InnerHtml, "[your pattern here]", "<a href='query=$&'>$&</a>");

...

doc.Save("output.html");

请注意,您可能需要处理href组件 - 我不确定您的链接应该如何构建。

答案 1 :(得分:1)

你匹配文字并替换:

<script>

    var s = '...';
    var matchs = s.match(/\d{2,3}\/\d{4}\/[a-zA-Z\-áàảãạăâắằấầặẵẫậéèẻẽẹêếềểễệóòỏõọôốồổỗộơớờởỡợíìỉĩịđùúủũụưứửữựÀÁÂÃÈÉÊÌÍÒÓÔÕÙÚĂĐĨŨƠƯĂẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼÊỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỨỪỬỮỰỲỴÝỶỸửữựỵỷỹ]+/gi);
    if (matchs != null) {
        for(var i=0; i<matchs.length;i++){
            var val = matchs[i];
            s = s.replace(val, '<a href="?key=' + val + '"/>' + val + '</a>');
        }
    }
    document.write(s);

</script>

答案 2 :(得分:0)

@Shaamaan感谢您的建议。经过几个小时的编码,它现在可以正常工作

"Developers can configure a test user that has granted tokens for the requested permission. Please submit your app after you have incorporated the requested permission."