首页 > 解决方案 > 正则表达式将匹配注释的 SQL 代码

问题描述

如何为下面的注释 SQL 代码编写 Java 正则表达式?

/*
    SELECT * FROM Table1;
    -- Comment in comment
    Another SQL code
*/
SQL-code
-- One line comment
/**/ -- Yet one comment
/* And yet one comment */

这是我当前的错误变体:(--.*)|(/\*(.*\n)*\*/).

我知道注释签名 ( --, /**/) 可以在字符串中,但出于我的目的,我们可以将字符串视为注释,这没关系。最重要的是排除所有注释的 SQL 代码。

标签: javaregex

解决方案


试试这个模式来匹配评论:

(?s)(?:\/\*.*?\*\/|--[^\n]*)

解释:

(?s)- 单行模式,.匹配换行符

(?:...)- 非捕获组

\/\*/*-从字面上匹配

.*?- 匹配零个或多个任意字符(非贪婪)

\*\/*/-从字面上匹配

|- 交替 - 匹配左侧或右侧的模式

-----从字面上匹配

[^\n]*- 匹配零个或多个除换行符以外的字符

演示


推荐阅读