Как использовать preg_match для поиска буквенных таблиц в тексте - PullRequest
0 голосов
/ 07 декабря 2011

У меня проблема.Мне нужно найти различные текстовые таблицы в тексте, например:

+--------------------+--------------------+---------------------+
|  Some data         |  Some results      |   Some things       |
|                    |                    |      (modules)      |
+--------------------+--------------------+---------------------+
|                    |                    |                     |
|                    |                    +---------------------+
|                    |                    |                     |
|                    +--------------------+---------------------+
|                    |                    |                     |
|                    |                    +---------------------+
|                    |                    |                     |
|                    +--------------------+---------------------+
|                    |                    |                     |
|                    |                    +---------------------+
|                    |                    |                     |
+--------------------+--------------------+---------------------+
|                    |                    |                     |
|                    |                    +---------------------+
|                    |                    |                     |
|                    +--------------------+---------------------+
|                    |                    |                     |
|                    |                    +---------------------+
|                    |                    |                     |
|                    +--------------------+---------------------+
|                    |                    |                     |
|                    |                    +---------------------+
|                    |                    |                     |
+--------------------+--------------------+---------------------+

или как

+--------------+--------------+-------------+----------+-----------+
|    Name      |Age           |  Possible   | Good     | Bad       |
|              |              |             |          |           |
+--------------+--------------+-------------+----------+-----------+
|      1       |      2       |      3      |    4     |     5     |
+--------------+--------------+-------------+----------+-----------+
|              Allgood things                          |           |
+--------------+--------------+-------------+----------+-----------+
|              |              |             |          |           |
+--------------+--------------+-------------+----------+-----------+

Я пытаюсь найти все, что начинается с + -, который заканчивается на - + и послеприходят пробелы или слова или цифры вроде этого:

$pattern = '/\+(-)+(.*)(-+\+[\s\d\w]+)/mis';
preg_match_all($pattern, $this->document, $matches);

Я нашел содержимое, начиная с одной таблицы до конца последней таблицы.Но я хочу найти все таблицы в документе.

Пожалуйста, помогите.

1 Ответ

1 голос
/ 07 декабря 2011

Попробуйте это

^[\+-]+$(\s*^[+|].*?$)*

См. здесь на Regexr

Будет найдена таблица, которая начинается со строки, состоящей из + и -. ^ соответствует началу строки, а $ соответствует концу строки. Если есть пробел, это необходимо для совпадения символов новой строки.
Затем следует группа, которая определяет строку в таблице: она должна начинаться с + или |, тогда до конца строки может быть любой символ. Эта полная группа будет повторяться до тех пор, пока не появится строка, не начинающаяся с одного из этих символов.

...