【发布时间】:2013-01-31 04:50:21
【问题描述】:
我试图在 INSERT 语句中查找单词“VALUES”之后的字符串位置,这将是实际行数据之前的位置。
我知道我需要使用正则表达式来获取 INSERT 语句的模式,而不是使用 strpos 来查找单词“VALUES”,但是当涉及到正则表达式函数时,我有点新手。
更新
我想找到 ") VALUES (" 的位置,并在括号之间允许空格、\n、\r、\t 等,因为有时 VALUES 在新行上。
谢谢
SQL 文件:
# ------------------------------
# --
# -- Dumping data for table `table_a`
# --
INSERT INTO `table_a` (`a`, `b`, `c`, `d`)
VALUES -- get position
(1, 'b', 'c', 'd'),
(2, 'b', 'c', 'd'),
(3, 'b', 'c', 'd');
# ------------------------------
# --
# -- Dumping data for table `table_b`
# --
INSERT INTO `table_b` (`a`, `b`, `c`, `d`) VALUES -- get position
(1, 'b', 'c', 'd'),
(2, 'b', 'c', 'd'),
(3, 'b', 'c', 'd');
【问题讨论】:
-
你希望结果是什么?
-
我真的希望你不要试图用正则表达式解析 SQL。
-
只使用
strpos()来查找VALUES会有什么问题?我认为VALUES会出现的唯一其他情况是插入中的ON DUPLICATE KEY UPDATE子句。如果你没有这些,我想不出你为什么会在表转储中,应该没有问题。 -
@arbme 然后搜索
) VALUES。 -
@arbme 不要误会我的意思,通常这样的事情是个坏主意,(尝试对不一定按顺序排列的数据使用正则表达式或 strpos)但如果您的用例有限在您了解数据将是什么的情况下,这可能是获得所需内容的快速而肮脏的方式。
标签: php mysql preg-match-all