Получить выделенный текстовый родительский тег с помощью регулярного выражения C # - PullRequest
1 голос
/ 01 февраля 2010
 <SPAN id=spanD121C150D2 style="BACKGROUND-COLOR: antiquewhite" CategoryID="1" MessageID="2316" refSpan="">
 <SPAN id=span1CE69EDE12 style="BACKGROUND-COLOR: blue" CategoryID="2" MessageID="2316" refSpan="">platnosci inny srodkiem platnosci. DC - zakup paliwa na stacji benzynowej 101-500 (150 zl). 27 
 </SPAN>
 </SPAN>

У меня есть строка, подобная приведенной выше.

Если выбранный текст «srodkiem», возможно ли получить соответствующий тег span?

Возможно ли это с помощью обычноговыражение

Ответы [ 3 ]

1 голос
/ 01 февраля 2010

Да, это возможно с регулярным выражением, но вы должны использовать Html Agility Pack . Использование этого будет намного менее болезненным для поддержания вашего кода.

0 голосов
/ 02 февраля 2010

Я написал небольшую функцию с пакетом HTML Agility:

  public static HtmlNode GetNodeByInnerText(string sHTML, string sText)
  {
      HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
      doc.LoadHtml(sHTML);
      int Position = sHTML.ToString().IndexOf(sText);
      return FindNodeByPosition(doc.DocumentNode, Position);
  }

  private static HtmlNode FindNodeByPosition(HtmlNode node, int Position)
  {
      HtmlNode foundNode = null;
      foreach (HtmlNode child in node.ChildNodes)
      {
          if (child.StreamPosition <= Position &
              ((child.NextSibling == null) || child.NextSibling.StreamPosition > Position))
          {
              if (child.ChildNodes.Count > 0 &
                  !(child.ChildNodes.Count == 1 && child.InnerHtml == child.FirstChild.InnerHtml))
              {
                  foundNode = FindNodeByPosition(child, Position);
                  break; // TODO: might not be correct. Was : Exit For
              }
              else
              {
                  return child;
              }
          }
      }
      return foundNode;
  }
0 голосов
/ 01 февраля 2010

это возможно с помощью регулярных выражений? р

Нет. Используйте анализатор HTML.

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