解析文件包含带有Java正则表达式的SQL查询
Java正则表达式存在问题 文件包含以下格式的一些SQL查询:解析文件包含带有Java正则表达式的SQL查询,java,regex,Java,Regex,Java正则表达式存在问题 文件包含以下格式的一些SQL查询: query_name_1 { any single line or multi line sql query } query_name_2 { any single line or multi line sql query } ... query_name_n { any single line or multi line sql query } 查询名称只能包含大写和小写字母、数字和下划线。SQL查询必须位于花
query_name_1 {
any single line or multi line sql query
}
query_name_2 {
any single line or multi line sql query
}
...
query_name_n {
any single line or multi line sql query
}
查询名称只能包含大写和小写字母、数字和下划线。SQL查询必须位于花括号内,不应进行分析以进行验证。括号必须与查询名称在同一行或更低。查询必须用任何空格符号拆分
我试图使用下面的正则表达式,但没有成功
[a-zA-Z_]+(\s*|\n*)\{.*\}
请发表任何关于如何修复它的建议。您可以使用regexp
Pattern.compile("query_name_[0-9]+.*?\{.*?\}",Pattern.DOTALL);
这结合了贪婪匹配和这样的事实。也将匹配新字符首先,您在查询名称中遗漏了数字的用法,因此没有
[a-zA-Z_]
但是
另外,我为queryname和查询本身添加了一个组,并更正了一些换行符的位置。这是一个可以使用的regexp:
([a-zA-Z_0-9]+)\s*\{\n*((?:.|\n)+?)\}
([a-zA-Z_0-9]+)\s*\{\n*((?:.|\n)+?)\}