Regex Non-Greedy
Я пытаюсь безжалостно разобрать теги TD. Я начинаю с чего-то вроде этого:
<TD>stuff<TD align="right">More stuff<TD align="right>Other stuff<TD>things<TD>more things
Я использую следующее как мое регулярное выражение:
Regex.Split(tempS, @"\<TD[.\s]*?\>");
Записи возвращаются как показано ниже:
""
"stuff<TD align="right">More stuff<TD align="right>Other stuff"
"things"
"more things"
Почему он не разбивает этот первый полный результат (тот, который начинается с "stuff" )? Как настроить регулярное выражение для разделения на все экземпляры TD-тега с параметрами или без них?
Ответы
Ответ 1
Вы хотите регулярное выражение <TD[^>]*>
:
< # Match opening tag
TD # Followed by TD
[^>]* # Followed by anything not a > (zero or more)
> # Closing tag
Примечание: .
соответствует чему-либо (включая пробелы), поэтому [.\s]*?
является избыточным и неправильным, так как [.]
соответствует литералу .
, поэтому используйте .*?
.
Ответ 2
Для не жадного соответствия попробуйте <TD.*?>