查找序列并用子集替换

时间:2014-04-16 13:11:11

标签: c# asp.net regex

我在多行文本字段中有以下HTML。

href =“/ Pages / 33 / 33998.aspx”>(答案33998)

我需要从URL中删除文件夹结构。 在我的正则表达式中我可以找到匹配但我似乎无法让替换工作。有人有什么建议吗?

继承我正则表达式的开头:

<a href=\"\/Pages\/\d{1,}\/\d{3,}[.]aspx"></a>

所以我有这个:

Regex.Replace(Convert.ToString(properties.AfterProperties["Description"]), @"<a href='/Pages\/\d{1,}\/\d{3,}[.]aspx'>", "TEST", RegexOptions.IgnoreCase);

2 个答案:

答案 0 :(得分:1)

您可以使用Regex.Replace方法并使用群组来确定您需要在匹配中保留的内容,如下所示:

var sample = @"
    href='/Pages/33/33998.aspx'>(Answer 33998)
    href='/Pages/12345.aspx'>(no match)
    href='/Pages/lala/12345.aspx'>(no match)
    ";
Console.WriteLine(Regex.Replace(sample, 
//    |-- First group--|    |-- Second group --|
    @"(href=['""]/Pages)/\d+(/\d{3,}\.aspx['""])", "$1$2"));
// ------------- First and second groups -------------^

答案 1 :(得分:0)

您可以使用/的简单拆分代替使用正则表达式,并取最后一个数组项。

string[] split = yourUri.Split("/");