我正在尝试编写代码以便在列表中获取匹配但没有匹配标记,直到现在我已经在使用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(匹配标签)的匹配项?
答案 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;
祝你好运!