我想在“ CREATE TABLE tablename(”之后添加一个换行符,所以我的想法是匹配(
的第一次出现并将其替换为(\n
:
源文本:
abcd
something
CREATE TABLE schema.test1(attribute1 DECIMAL(28, 7) NULL ,
ATTRIBUTE2 DECIMAL(28, 7) KEY NOT NULL ,
ATTRIBUTE3 DECIMAL(28, 7) NOT NULL ,
SET("db_alias_name" = 'TEST')
;
efgh
something else
CREATE TABLE schema.test2(columna DECIMAL(28, 7) NULL ,
columnb DECIMAL(28, 7) KEY NOT NULL ,
columnc DECIMAL(28, 7) NOT NULL ,
SET("db_alias_name" = 'TEST')
;
所需结果:
abcd
something
CREATE TABLE schema.test1(
attribute1 DECIMAL(28, 7) NULL ,
ATTRIBUTE2 DECIMAL(28, 7) KEY NOT NULL ,
ATTRIBUTE3 DECIMAL(28, 7) NOT NULL ,
SET("db_alias_name" = 'TEST')
;
efgh
something else
CREATE TABLE schema.test2(
columna DECIMAL(28, 7) NULL ,
columnb DECIMAL(28, 7) KEY NOT NULL ,
columnc DECIMAL(28, 7) NOT NULL ,
SET("db_alias_name" = 'TEST')
;
在包含括号之前,我设法匹配了文本:
(?=CREATE\ TABLE).+?\(
如何只匹配第一个括号?
最佳答案
您无需在此处查找。
>>> re.sub(r'(?i)(CREATE *TABLE[^(]*\()', "\\1\n", data)
注意:内联
(?i)
修饰符放在此处,以区分大小写。Working Demo
关于python - Python-正则表达式,往后看,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23787867/