在Kotlin中对字符串进行标记

时间:2016-06-09 21:01:46

标签: regex string replace tokenize kotlin

我有一个sql查询字符串来创建或替换看起来像这样的Oracle DB的触发器......

CREATE OR REPLACE TRIGGER schema.trigger_name 
    BEFORE DELETE ON schema.table_c 
    FOR EACH ROW 
    BEGIN 
        INSERT INTO table_h (col_1, 
                              col_2, 
                              col_3, 
                              col_4) 
        VALUES (val_1,
                val_2,
                val_3,
                val_4) 
    END

我试图删除所有SQL关键字,以便我留下一张类似于......的地图。

{trigger_name "schema.trigger_name",
 on_table     "schema.table_c",
 hist_table   "schema.table_h",
 cols         ["col_1", ... ],
 values       ["val_1", ... ]}

我现在正在尝试使用正则表达式删除所有关键字,然后我就可以相应地拆分剩余的字符串了。我的替换看起来像这样......

val r = s.replace(
        "^(BEFORE DELETE ON" +
        "|CREATE OR REPLACE TRIGGER" +
        "|BEGIN" +
        "|INSERT INTO" +
        "|VALUES" +
        "|END)", "")

其中s是我上面给出的字符串。当我运行它时,输出没有变化。我不是很擅长正则表达式(我很少使用它),所以听到我的绝对错误并不会让我感到震惊。我对Kotlin也很陌生,所以如果有一种更惯用的方法(我确信有),我会非常兴奋地学习!

0 个答案:

没有答案