java - 正则表达式将匹配注释的 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 代码。
解决方案
试试这个模式来匹配评论:
(?s)(?:\/\*.*?\*\/|--[^\n]*)
解释:
(?s)
- 单行模式,.
匹配换行符
(?:...)
- 非捕获组
\/\*
/*
-从字面上匹配
.*?
- 匹配零个或多个任意字符(非贪婪)
\*\/
*/
-从字面上匹配
|
- 交替 - 匹配左侧或右侧的模式
--
--
-从字面上匹配
[^\n]*
- 匹配零个或多个除换行符以外的字符
推荐阅读
- c# - 禁止访问私有变量
- ruby-on-rails - 为 Rails 5 应用程序更新您的 Amazon RDS SSL/TLS 证书
- regex - 正则表达式问题从文件名中获取特定的字符串单词
- xamarin - Xamarin MVVM 使用模型属性填充模型
- c# - 布尔返回类型不应该总是返回真或假吗?
- postgresql - psql:如何明确告诉端口号
- python - Python 多处理使系统无响应
- javascript - 功能组件中的 setState 与 e.target.value 是否有不同的方法使用钩子做出反应?
- excel - Excel 的问题 在多个 Excel 文件中查找/替换一个字符串
- typescript - 将泛型对象分配给 Partial 类型