RegEx:通过第一行和最后一行匹配多行块[重复]

6yjfywim  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(104)

此问题在此处已有答案

How do i repeat regex(1个答案)
上个月关门了。
有一大块文本(PL/SQL DDL脚本)。
我需要使用Python re库删除所有表名包含美元符号(“$”)的CREATE TABLE块。
PL/SQL脚本的格式相对较好。特别地,第一行将始终以CREATE TABLE开始,并且还将包含表的名称(即,CREATE TABLE和表名之间没有换行符);整个CREATE TABLE ...语句的结束圆括号将总是在单独的行上,并且它将总是该行中的唯一字符。
范例:

CREATE TABLE "SCH"."SOME$TABLE"
( "NAME" VARCHAR2(100 CHAR),
"DATA1" BLOB,
"TIMESTAMP1" DATE
)

字符串
我正在寻找一个与Python的re库兼容的正则表达式,它将匹配上述5行。
我尝试了以下方法:

(?m)^CREATE TABLE.*\$.*[\s\S]^\)$


但它不匹配任何东西。
我做错了什么?

mcdcgff0

mcdcgff01#

“……我做错了什么?“*
我相信您的错误是与[\s\S]字符组,因为它只匹配一个字符
您可以附加一个+?量词,以匹配^\)$

(?m)^CREATE TABLE.*\$.*[\s\S]+?^\)$

字符串

相关问题