Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex SQLite自动增量正则表达式_Regex_Sqlite - Fatal编程技术网

Regex SQLite自动增量正则表达式

Regex SQLite自动增量正则表达式,regex,sqlite,Regex,Sqlite,我从SQLite获取create语句查询,如下所示: CREATE TABLE [users] ([id] INTEGER PRIMARY KEY AUTOINCREMENT, [username] VARCHAR, [password] VARCHAR, [default_project] VARCHAR) /\b\[?id\]?\s+INTEGER\s+PRIMARY\s+KEY\s+AUTOINCREMENT\b/Ui 通过使用创建 SELECT sql FROM sqlite_m

我从SQLite获取create语句查询,如下所示:

CREATE TABLE [users] ([id] INTEGER PRIMARY KEY AUTOINCREMENT, [username] VARCHAR, [password] VARCHAR, [default_project] VARCHAR) 
/\b\[?id\]?\s+INTEGER\s+PRIMARY\s+KEY\s+AUTOINCREMENT\b/Ui 
通过使用创建

SELECT sql FROM sqlite_master WHERE type = 'table' AND name = :table
使用如下正则表达式确定自动增量字段:

CREATE TABLE [users] ([id] INTEGER PRIMARY KEY AUTOINCREMENT, [username] VARCHAR, [password] VARCHAR, [default_project] VARCHAR) 
/\b\[?id\]?\s+INTEGER\s+PRIMARY\s+KEY\s+AUTOINCREMENT\b/Ui 
问题是有不同的可接受的方法来编写关键字,例如
“id”
“id”
“id”
。此处显示

我想创建一个正则表达式,它可以显式地检查这些不同的变体……在其他人的帮助下,我做到了:

$pattern = "/\b\"(id)|(\"id\")|(\[id\])|(`id`)|('id')\"\s+INTEGER\s+PRIMARY\s+KEY\s+AUTOINCREMENT\b/Ui";
然而,这有两个问题…一个是,
整数主键自动递增
不再被检查…并且,
('id')
没有正确匹配…但是,如果我将其位置与
('id')
…交换,它将工作,
('id')

/(\"id\"|\[id\]|\'id\'|`id`|\\bid)\s+INTEGER\s+PRIMARY\s+KEY\s+AUTOINCREMENT/Ui

似乎按预期工作。

[id]
[id]
不匹配,但只有
i
d
,您正在搜索的可能是:

$pattern = "/\s(\"[a-z]+\"|\[[a-z]+\]|'[a-z]+'|[a-z]+)\s+INTEGER\s+PRIMARY\s+KEY\s+AUTOINCREMENT/Ui";
使用
[a-z]+
以便可以匹配任何字母字段名,然后在第一个匹配中找到它(还要注意,可能有一些rowid不使用
自动增量
关键字:它们都有效,但都带有a)