正则表达式php重复字符错误

时间:2016-01-23 16:54:34

标签: php mysql regex parsing migration

我尝试解析MySQL转储以自动创建迁移。

删除数据库解析为:

preg_match_all('/DROP TABLE.+`.+`(.+|.?);/', $this->contents, $this->dropTableBlock);

但是create table query返回false和empty array:

preg_match_all('/CREATE TABLE.+`.+`.+\(.+\).+(ENGINE=.+)?.+(DEFAULT CHARSET=[.]{1,5});/is', $this->contents, $this->createTableBlock);

在regex101.com上,匹配需要字符串: https://regex101.com/r/eD8wI5/1

请告诉我,为什么preg_match_all什么都找不到?

2 个答案:

答案 0 :(得分:0)

删除点周围的[]会修复它。

preg_match_all('/CREATE TABLE.+`.+`.+\(.+\).+(ENGINE=.+)?.+(DEFAULT CHARSET=.{1,5});/is', $content, $matches);

答案 1 :(得分:0)

dbname.tablename

注释

  • 处理前导/尾随空格
  • 将换行符和表格视为空格
  • 处理可选的背景
  • 处理return sum(((x ** i) / (factorial(i))) for i in range(0, u+1)) 语法
  • \ w不处理db / table names的所有可能字符