查找某些文本并过滤掉其余部分

时间:2012-10-28 02:27:20

标签: c# regex http

假设我有这个字符串(巨大的),我想过滤除了我正在寻找的所有东西。这是我想要的一个例子:

<strong>You</strong></font> <font size="3" color="#05ABF8">
<strong>Shook</strong></font> Me All <font size="3" color="#05ABF8">
<strong>Night</strong></font> <font size="3" color="#05ABF8">
<strong>Long</strong></font> mp3</a></div>

正如你所看到的,所有这些之间都有文字。我想得到“你彻夜狂笑我”并取出其余部分。我将如何完成这项工作?

2 个答案:

答案 0 :(得分:3)

您可以使用以下正则表达式:>([\s|\w]+)<

var input = @"
<strong>You</strong></font> <font size='3' color='#05ABF8'>
<strong>Shook</strong></font> Me All <font size='3' color='#05ABF8'>
<strong>Night</strong></font> <font size='3' color='#05ABF8'>
<strong>Long</strong></font> mp3</a></div>";

var regex = new Regex(@">(?<match>[\s|\w]+)<");

var matches = regex.Matches(input).Cast<Match>()
   // Get only the values from the group 'match'
   // So, we ignore '<' and '>' characters
   .Select(p => p.Groups["match"].Value);

Matches

// Concatenate the captures to one string
var result = string.Join(string.Empty, matches)
    // Remove unnecessary carriage return characters if needed
    .Replace("\r\n", string.Empty);

The result

答案 1 :(得分:1)

假设您在发布的xml / html末尾有结尾</a></div>的有效开始标记。

string value = XElement.Parse(string.Format("<root>{0}</root>", yourstring)).Value;

或者剥离Html的方法:

public static string StripHTML(this string HTMLText)
{
    var reg = new Regex("<[^>]+>", RegexOptions.IgnoreCase);
    return reg.Replace(HTMLText, "").Replace("&nbsp;", " ");
}