Regex для извлечения блока текста между совпадениями - PullRequest
0 голосов
/ 23 июня 2010

Хорошо, вот моя проблема. Я пытаюсь написать скрипт на PHP, который будет анализировать нашу систему рабочих заказов и возвращать набор заявок, но я натолкнулся на небольшую проблему, пытаясь разобрать список заявок. Я пытался использовать регулярные выражения как можно больше, чтобы заставить себя выучить синтаксис, и я мог опасаться, что это должно работать, но, увы, это не так, и поэтому я прихожу сюда в поисках Твоей коллективной мудрости.

<tr>
   ...
   ...
   ...
   ...
</tr>

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

/<tr>(.+)<\/tr>/

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

if /<tr>/ then {
   while != /<\/tr>/ {
      store line
   }
}

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

Ответы [ 2 ]

2 голосов
/ 23 июня 2010
  • Возможно, вам нужен модификатор s (PCRE_DOTALL) , чтобы совпасть по нескольким строкам.
  • Может быть, вам нужно .*? вместо .* или U (PCRE_UNGREEDY) модификатор для соответствия не жадным.
1 голос
/ 23 июня 2010

Использование Простой HTML DOM .

Синтаксический анализ регулярных выражений html - беспорядок.

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