Теперь я хочу выражение, которое ищет каждую строку таблицы и может обрабатывать динамические числа ([0-9] {4}). Поэтому, если есть две ячейки, я хотел бы получить массив с двумя значениями, если их три, в моем массиве должны быть все три значения. (...) Это возможно?
Нет, это не так. Вы не можете написать шаблон с динамическим числом под-шаблонов.
Мое регулярное выражение ДОЛЖНО начинаться и заканчиваться на:
!<tr> ..... </tr>!sU
Почему это?
Если вы действительно хотите использовать регулярные выражения вместо использования синтаксического анализатора XML или чего-то более прощающего, например Tidy, я предлагаю двухэтапный подход.
Первый шаг : Найти <tr>
строк:
!<tr>(.*?)</tr>!
Второй шаг : перебрать результаты и найти <td>
s:
!<td>(?:<[^>]+>)*(\d{4})(?:<[^>]+>)*</td>!
Это позволит найти последовательности из 4 десятичных символов (0-9) в пределах <td>
, а также будет соответствовать вложенным тегам форматирования, таким как
<td><strong>1234</strong></td>