与正则表达式匹配,不包括字符串标记

时间:2013-11-22 18:05:54

标签: c# regex tags windows-phone match

我正在尝试编写代码以便在列表中获取匹配但没有匹配标记,直到现在我已经在使用C#编写的WP7应用程序中构建了以下代码

public static MatchCollection MatchTags(string content, string string_start, string string_end)
{
    MatchCollection matches = Regex.Matches(content, string_start + "(.*?)" + string_end, RegexOptions.IgnoreCase);
    return matches;
}

那么如何在匹配提取后不使用replace函数返回不带string_start,string_end(匹配标签)的匹配项?

3 个答案:

答案 0 :(得分:1)

使用lookarounds ..

String.Format("(?<={0}).*?(?={1})",string_start,string_end);

虽然您也可以在正则表达式(.*?)中使用groups.i.e来捕获第1组中的内容。不需要的外观然后..

MatchTags(content,start,end).Cast<Match>()
                            .Select(x=>x.Groups[1].Value);

答案 1 :(得分:1)

当我使用下一个代码获得结果时,它会起作用:

string my_string_no_tags = matches[number].Groups[1].Value;

答案 2 :(得分:0)

考虑以下代码......

MatchCollection matches = Regex.Matches(content, string.Format("(?<={0}).*?(?={1})", string_start, string_end), RegexOptions.IgnoreCase);
return matches;

祝你好运!