2015-04-30 4 views
-3

Я использую выражение регулярного выражения для строки, и у меня есть проблема, что слева от строки нет ничего, что не повторяется в строке несколько раз.C# регулярное выражение ближайшего символа

">something">tofind</a> 

эта часть:

</a> 

является уникальным в строке, но

"> 

часть слева НЕ

как я могу сделать это выражение взять первый "> слева от значения (для соответствия), а не первого с начала строки

\">(.*)</a> 

не работает должным образом из-за этого и дает мне "> tofind and rightfully so.

любое решение? я хотел бы, чтобы решение моей проблемы было внутри выражения, а не дополнительного кода. из-за моей неспособности жестко указать исправление для каждой специальной проблемы, которую я могу иметь со строками.

спасибо большое!

код обработки строки

    var regex = new Regex(regexstring); 

        var matches = regex.Matches(line); 

        foreach (var singleuser in matches.Cast<Match>().ToList()) 
        { 
         allusernames.Add(singleuser.Groups[1].Value); 
        } 
+0

В качестве примечания, [CsQuery] (https://github.com/jamietre/CsQuery) является отличный способ обработки HTML в C#! –

+0

Мне нравится это raw :) –

+1

возможно дублировать [теги OpenEx Open, за исключением тегов XHTML с автономными тегами] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self- содержащиеся теги) – AeroX

ответ

1

Вы можете использовать следующий ..

\">([^>]*)</a> 

Объяснение:

  • \"> матч буквальным \">
  • ([^>]*) матч все символы, кроме > ([^>] быть сведен на нет множества)
  • </a> матч буквального </a>

См DEMO

+0

Я попробую его и вернусь с информацией –

+0

@tim_po Я неправильно понял ваш вопрос .. попробуйте обновленное регулярное выражение .. –

+0

мой герой! можете ли вы вкратце объяснить, что вы сделали? –

Смежные вопросы