C #: Как найти теги с помощью регулярных выражений и собрать список <string> - PullRequest
0 голосов
/ 06 октября 2011

У меня есть такая текстовая строка:

<dt>
  <span>
    <tag:text name="fee" />
  </span>
</dt>
...
<tag:text name="amount" />    

я хочу найти все теги типа

<tag:text 

и затем собрать список со значениями из элемента name:

"fee"
"amount"

Ответы [ 2 ]

0 голосов
/ 06 октября 2011
(?<=tag:text name=").*(?=") 

тест с grep:

kent$  echo '<dt>
      <span>
        <tag:text name="fee" />
      </span>
    </dt>
    ...
    <tag:text name="amount" />   '|grep -Po '(?<=tag:text name=").*(?=")' 

    fee
    amount
0 голосов
/ 06 октября 2011

Вот регулярное выражение, которое вы (РЕДАКТИРОВАТЬ: вероятно, не хотите) хотите, просто убедитесь, что отключили чувствительность к регистру:

<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>


Затем просто используйте класс System.Text.RegularExpressions.Regex для выполнения операции регулярного выражения:

MatchCollection mc = Regex.Matches(str, @"<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>", RegexOptions.IgnoreCase);

Смотрите здесь для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/b49yw9s8.aspx

Примечание. Может потребоваться настроить регулярное выражение для работы с двоеточиями в тексте.

Примечание # 2: Как упоминалось выше, если это XML, то вы должны проанализировать его, используя соответствующие классы XML из пространства имен System.Xml.

...