.net кратчайшая строка регулярное выражение - PullRequest
1 голос
/ 20 мая 2011

Как найти самую короткую строку, первое появление которой она должна вернуть

У меня есть эта строка.Я ищу тд, значение которого содержит блабла с закрытием тд.Например:

  <tr blabla><td>blabla big content</td></tr><tr><td>thisisnot</td></tr>

Я хочу только эту строку

  <tr blabla><td>blabla big content</td></tr>

Я использую это регулярное выражение в .net

<tr.*><td>blabla.*</td></tr>

Я новичок в регулярном выражении ...

Может ли кто-нибудь сказать мне выход.

Ответы [ 2 ]

6 голосов
/ 20 мая 2011

Regex по своей природе жадный - он будет пытаться сопоставить самую длинную строку, которая удовлетворяет шаблону.

Вам необходимо использовать не жадный квантификатор в вашем шаблоне.Поэтому вместо «*» используйте «*?», А затем используйте группировки для «захвата» совпадения.Анонимный захват элементов осуществляется путем помещения группы, которую вы хотите захватить, в набор скобок.Следующее, кажется, делает трюк:

(<tr.*?><td>blabla.*?</td></tr>).*

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

0 голосов
/ 20 мая 2011

Используйте (?<=<td>)[^<]+ в качестве регулярного выражения, затем выполните сравнение длины совпадений.

...