2

我正在寻找一个正则表达式来从 sql 中删除注释行。所有评论都以“COMMENT ON”开头(显然),但可能往往不止一行。我能够想出一个表达式来删除单行,但我正在为多行而苦苦挣扎。我要删除的典型条目如下所示:

COMMENT ON TABLE account_heading IS $$
This table holds the account headings in the system.  Each account must belong 
to a heading, and a heading can belong to another heading.  In this way it is 
possible to nest accounts for reporting purposes.$$;

所以我需要的是一个正则表达式,它遵循多行直到它看到一个分号。

我想出了这个,它将搜索到第二行并停在双美元($$)处。我昨天刚开始使用 RegEx,如果这绝对是完全错误的,请原谅我(我确信它是):

^COMMENT ([^\n\r]+)[\n\r]([\$;\n\r]+)

我在 Mac 上使用 Grep 选项在 TextWrangler 中执行此操作。

谢谢!

4

2 回答 2

0

也许类似COMMENT\sON.*?\$\$;- 如果您能够将编辑器设置为匹配多行(通常通过指定s标志),它应该可以工作。

于 2012-08-08T20:04:03.957 回答
0

好吧,我不太了解 SQL,但是如果你想要 '$$' 之间的内容,只需使用:

\${2}[^\${2}]*\${2};

如果您想要“IS”字之后的所有内容:

COMMENT .*? IS ([^;]*)

匹配任何不是分号的内容(获取第一组,而不是匹配项)。

于 2012-08-08T20:07:24.837 回答