Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式查找带有特殊href的锚链接?_C#_Regex - Fatal编程技术网

C# 正则表达式查找带有特殊href的锚链接?

C# 正则表达式查找带有特殊href的锚链接?,c#,regex,C#,Regex,我只需要为以下内容找到一个正则表达式: 我在div标签中有一些内容,其中包括很多锚链接。因此,我的任务是查找href格式为“components/showdoc.aspx?docid=”的锚定链接,然后仅为该锚定链接添加onclick事件,保留其余锚定链接 <div id="content" runat="server"> <a href="www.xxxx.com/components/showdoc.aspx?docid=100">test doc</a

我只需要为以下内容找到一个正则表达式:

我在
div
标签中有一些内容,其中包括很多锚链接。因此,我的任务是查找
href
格式为“components/showdoc.aspx?docid=”的锚定链接,然后仅为该锚定链接添加
onclick
事件,保留其余锚定链接

<div id="content" runat="server">
    <a href="www.xxxx.com/components/showdoc.aspx?docid=100">test doc</a>
</div>

此表达式提供并向其添加目标

RegEx.Replace(inputString, "<(a)([^>]+)>", "<$1 target=""_blank""$2>")
RegEx.Replace(inputString,“]+)>”,“”)

谢谢

不要使用正则表达式来解析html,这是邪恶的

你可以用这个,它甚至有一个漂亮的

或者,您可以使用一行jQuery在客户端执行此操作:

$('a[href*="components/showdoc.aspx?docid="]').on('click', myClickFunction);
这是在利用

如果要在单击函数中查找docid,可以在单击函数中编写如下内容:

function myClickFunction(e){
    var href = $(this).attr('href');
    var docId = href.split('=')[1];
    alert(docId);
}

请注意,这假设只有一个查询字符串值,如果您想使其更健壮,可以执行以下操作:

如果您希望对HTML文件进行永久性更改,请首先通过将其加载到
System.Windows.Forms.WebBrowser
控件来管理HTML解析。从那里,您可以对HTML执行类似DOM的修改,而不会因对原始文件执行
Regex.Replace
而产生解析损坏的危险后果。(显然,对于某些人来说,RegEx+HTML是一个严重的问题)

因此,首先在代码中,您将:

WebBrowser myBrowser = new WebBrowser();
myBrowser.URL = @"C:\MyPath\MyFile.HTML";
HtmlElement myDocBody = myBrowser.Document.Body;
然后,您可以通过使用
HtmlElement.Id
属性和
HtmlElement.GetAttribute
方法浏览文档正文,查找
div
标记并查找锚定标记

注意:仍然可以在URL字符串上使用正则表达式匹配,但只能在从
GetAttribute(“href”)
方法中提取它们之后使用

要添加
onClick
方法,只需调用
HtmlElement.SetAttribute
方法

完成所有修改后,通过将
WebBrowser.DocumentText
写入文件来保存更改

以下是参考资料:

无法保持已太迟。您的onclick事件是客户端事件,对吗?javascript解决方案可以接受吗?我同意@Zeus。我会使用jQuery来做这件事。我想这样做:$('a[href*=“components/showdoc.aspx?docid=“]”)。on('click',myClickFunction);但我的问题是如何在onclick函数中访问该文档id?这是有道理的,但是有没有办法从该url获取文档id并在onclick函数中使用它?@user1542851,我已经更新了我的答案,以显示如何获取所单击链接的href,然后找到查询字符串值。