使用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
}
}
我能做什么? 非常感谢。
答案 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."