asp.net c#正则表达式url解析

asp.net c#正则表达式url解析,c#,asp.net,regex,url,C#,Asp.net,Regex,Url,但我需要编写一个函数,它接收字符串,在超链接中查找URL,然后交换URL,这样页面名称现在就可以用作锚定,例如 <a href="mysection/mysector/apage.aspx"> 将成为 <a href="mysection/mysector.aspx#apage"> 但这只会发生在mysector文件夹中的链接上 我现在有点不知所措,任何帮助都会很好。没有特别的顺序: 这将在测试正则表达式时帮助您: 查看Matches集合这是保存字符串部分的地

但我需要编写一个函数,它接收字符串,在超链接中查找URL,然后交换URL,这样页面名称现在就可以用作锚定,例如

<a href="mysection/mysector/apage.aspx">

将成为

<a href="mysection/mysector.aspx#apage">

但这只会发生在mysector文件夹中的链接上


我现在有点不知所措,任何帮助都会很好。

没有特别的顺序:

这将在测试正则表达式时帮助您:

查看
Matches
集合这是保存字符串部分的地方

例如:

警告:


祝你好运。

这将吃掉“folder/”的所有序列,并捕获最后一个。这将附加一个“.aspx”和“#”以及不带扩展名的文件名。如果文件夹和文件名不能仅包含字母数字字符,则可能需要进一步调整字符类

href="(([a-z0-9]+/)*)([a-z0-9]+)/([^.]+)\.aspx"
然后替换为

href="$1$3.aspx#$4"

还可以尝试“mysection/anothersection/yetanotherone/mysector/apage.aspx”来了解它的工作原理

我建议使用模块将其固定在后端。那么你就不需要任何代码了

如果你真的想在c#中这样做:


这只适用于将“mysector”作为最后一个文件夹的情况。而且我觉得实际上是不行的。你真的试过了吗?OP注意到他只想要mysector文件夹中的链接。当然,这并没有考虑到该文件夹中的任何子目录,但他并没有指定。我很快对它进行了测试,它似乎确实有效。它对你不起作用吗?嘿,莱夫,谢谢你的解释,但我想我需要更多的帮助才能让它起作用。在中尝试时,我将您的正则表达式与测试字符串some text/mysector/page.aspx sadasdasd一起使用,但它似乎与任何内容都不匹配。在regexpal.com上,您必须确保您的正则表达式没有任何尾随空格(换行符等)。你也可以使用Tremmors函数来尝试我的正则表达式。我对它做了一点调整,使它更加具体,如果你不使用它,它应该可以在C#中工作。你也可以检查我的正则表达式,它更好。它工作(选择“替换”选项卡)。啊,绿色复选标记告诉我它工作了。:)我希望你对这个解决方案感到满意。嘿,莱夫,是的,效果很好,谢谢。我想我更了解regex,双赢。
public string FixLinks(string strHTML)
{
    try
    {
        return Regex.Replace(strHTML, "(href=\\\".*/mysector)/(.*)", "$1.aspx#$2");
    }
    catch (Exception e)
    {
        return strHTML;
    }
}