如何使用preg_match在文本中查找文字表

时间:2011-12-07 15:13:57

标签: php regex preg-match-all

我遇到了问题。我需要在文本中找到不同的文本表,如:

+--------------------+--------------------+---------------------+
|  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 个答案:

答案 0 :(得分:1)

试试这个

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

here on Regexr

这将找到一个以+-组成的行开头的表格。 ^匹配行的开头,$匹配行的结尾。有一个空格,需要匹配换行符 然后是一个在表中定义行的组:它必须以+|开头,然后可以有任何字符直到行的末尾。这个完整的组将被重复,直到有一行没有以这些字符之一开始。