gpt4 book ai didi

java - 将单个文件拆分为多个文件

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:01 24 4
gpt4 key购买 nike

我收到了一个包含 20,000 多行的 SQL 文件。 sql 由过程、ddl 和 dml 组成。我找到了一种“更快”的方式来分割文件......

所以我正在考虑创建一个根据功能分割内容的脚本。以下是我的正则表达式:

String sp_regex = "(CREATE OR REPLACE PROCEDURE) .+(SHOW ERRORS;)$";
String insert_regex = "(INSERT INTO) .+(SHOW ERRORS;)$";
String delete_regex = "(DELETE FROM) .+([)];)$";
String table_regex = "(CREATE TABLE) .+([)];)$";

但是正则表达式都不起作用。内容根本没有 split 。我的正则表达式有什么问题?

示例 SQL:

CREATE OR REPLACE PROCEDURE "SCHEMA"."SP" (
......
);
/
SHOW ERRORS;

CREATE TABLE "SCHEMA"."TABLE" (
......
);

INSERT INTO "SCHEMA"."TABLE" ( ...... ) VALUES ( "......" );

DELETE FROM "SCHEMA"."TABLE" WHERE ..... = "....";

最佳答案

您应该允许 . 匹配换行符,并允许 $ 匹配行结尾(不仅仅是 EOF)。如果这样做,您还需要使 + 量词变得惰性,以便告诉它尽早停止匹配:

String sp_regex = "(?sm)(CREATE OR REPLACE PROCEDURE) .+?(SHOW ERRORS;)$";
String insert_regex = "(?sm)(INSERT INTO) .+?(SHOW ERRORS;)$";
String delete_regex = "(?sm)(DELETE FROM) .+?([)];)$";
String table_regex = "(?sm)(CREATE TABLE) .+?([)];)$";

您需要彻底测试这一点 - 与这些正则表达式不匹配的行将被忽略。

关于java - 将单个文件拆分为多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28066324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com