正则表达式 - 如何 select 后面的所有文本(多行)
RegEx - How to select all text in between backes (multiline)
基本上,我想做的是解析一个 *.sql
文件和 select 所有 CREATE TABLE
语句。下面的示例:
-- ----------------------------
-- Table structure for aes_interval
-- ----------------------------
DROP TABLE IF EXISTS `aes_interval`;
CREATE TABLE `aes_interval` (
`processcode` bigint(20) NOT NULL,
`overstaying` int(11) NOT NULL,
`floating` int(11) NOT NULL,
PRIMARY KEY (`processcode`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci;
通过 运行 一个正则表达式 select 都在 (...)
之间,我将能够得到如下 output/substringed 文本:
CREATE TABLE `aes_interval` (
`processcode` bigint(20) NOT NULL,
`overstaying` int(11) NOT NULL,
`floating` int(11) NOT NULL,
PRIMARY KEY (`processcode`) USING BTREE
)
我试过 CREATE TABLE
\w+\((.|\n)*?\)
但只有 returns 下面的输出:
CREATE TABLE `aes_interval` (
`processcode` bigint(20)
希望我能在这里找到正确的正则表达式。
假设 CREATE TABLE
语句以分号结束,因此分号直到每个语句结束才出现,那么下面的正则表达式应该有效:
(CREATE TABLE.*?;)
需要注意的是,以上内容需要 运行 在 tool/language 中,点配置为匹配换行符。并且还需要启用多行匹配模式。
编辑:
我怀疑 lazy dot 在 Sublime Text 上不起作用。如果是这样,那么您可以尝试以下模式:
(CREATE TABLE[^;]*)
中尝试 (CREATE TABLE.*?((\(.*?\)).*?)+\))
基本上,我想做的是解析一个 *.sql
文件和 select 所有 CREATE TABLE
语句。下面的示例:
-- ----------------------------
-- Table structure for aes_interval
-- ----------------------------
DROP TABLE IF EXISTS `aes_interval`;
CREATE TABLE `aes_interval` (
`processcode` bigint(20) NOT NULL,
`overstaying` int(11) NOT NULL,
`floating` int(11) NOT NULL,
PRIMARY KEY (`processcode`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci;
通过 运行 一个正则表达式 select 都在 (...)
之间,我将能够得到如下 output/substringed 文本:
CREATE TABLE `aes_interval` (
`processcode` bigint(20) NOT NULL,
`overstaying` int(11) NOT NULL,
`floating` int(11) NOT NULL,
PRIMARY KEY (`processcode`) USING BTREE
)
我试过 CREATE TABLE
\w+\((.|\n)*?\)
但只有 returns 下面的输出:
CREATE TABLE `aes_interval` (
`processcode` bigint(20)
希望我能在这里找到正确的正则表达式。
假设 CREATE TABLE
语句以分号结束,因此分号直到每个语句结束才出现,那么下面的正则表达式应该有效:
(CREATE TABLE.*?;)
需要注意的是,以上内容需要 运行 在 tool/language 中,点配置为匹配换行符。并且还需要启用多行匹配模式。
编辑:
我怀疑 lazy dot 在 Sublime Text 上不起作用。如果是这样,那么您可以尝试以下模式:
(CREATE TABLE[^;]*)
(CREATE TABLE.*?((\(.*?\)).*?)+\))