Нужна быстрая помощь в C # Regex - PullRequest
0 голосов
/ 21 мая 2010

У меня есть этот HTML:

<a href="http://www.site.com/">This is the content.</a>

Мне просто нужно избавиться от тега привязки html вокруг текста контента, чтобы все, что я в итоге получал, это «Это контент».

Могу ли я сделать это с помощью Regex.Replace?

Ответы [ 3 ]

2 голосов
/ 21 мая 2010

Ваше регулярное выражение: <a[^>]+?>(.*?)</a>

Проверьте это регулярное выражение с классом Regex и выполните итерацию по сбору результатов и вы должны получить свой внутренний текст.

String text = "<a href=\"link.php\">test</a>";

Regex rx = new Regex("<a[^>]+?>(.*?)</a>");
// Find matches.
MatchCollection matches = rx.Matches(text);

// Report the number of matches found.
Console.WriteLine("{0} matches found. \n", matches.Count);

// Report on each match.
foreach (Match match in matches)
{
    Console.WriteLine(match.Value);

    Console.WriteLine("Groups:");
    foreach (var g in match.Groups)
    {
        Console.WriteLine(g.ToString());
    }
}

Console.ReadLine();

Выход:

  1 matches found. 
  <a href=\"link.php\">test</a> 
  Groups:
  <a href=\"link.php\">test</a> 
  test

Выражение совпадения в () сохраняется во втором элементе коллекции match Groups (первый элемент - это само совпадение). Каждое выражение в () попадает в коллекцию Groups. См. MSDN для получения дополнительной информации.

0 голосов
/ 21 мая 2010

Вы также можете использовать группы в Regex.

Например, следующее даст вам содержимое любого тега.

      Regex r = new Regex(@"<a.*>(.*)</a>"); 
      // Regex r = new Regex(@"<.*>(.*)</.*>"); or any kind of tag

        var m = r.Match(@"<a href=""http://www.site.com/"">This is the content.</a>");

        string content = m.Groups[1].Value;

вы используете группы в регулярных выражениях, используя круглые скобки, хотя группа 0 - это полное совпадение, а не просто группа.

0 голосов
/ 21 мая 2010

Если бы вам пришлось использовать Replace, это работало бы для простого строкового содержимого внутри тега:

Regex r = new Regex("<[^>]+>");
string result = r.Replace(@"<a href=""http://www.site.com/"">This is the content.</a>", "");
Console.WriteLine("Result = \"{0}\"", result);

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...