0 0

java 怎么用正则表达式解析sql中的表名,已有半成品,求改善20

目的是解析出复杂sql文中的表名,现在 ,select * from a where ...这种的语句,能解析出a,但是如果是select * from A.a的话,要取到A.a,我不知道该怎么改,求各位指点
代码如下:
String str = "INSERT INTO A\n" + 
    "SELECT B.B1, B.B2, C.C1, C.C2\n" + 
    "FROM B INNER JOIN C ON B.B0 = C.C0\n" + 
    "WHERE B.B0 IN (SELECT D0 FROM D,E,G,H WHERE D.D1 = E.E1) \n"; 
//String strSel = "SELECT * FROM PRODUCTION.LOCATION A LEFT JOIN (SELECT * from TESTT ) B ON B.PRODUCTID = A.LOCATIONID  WHERE B.PRODUCTID < ?";
Pattern p = Pattern 
    .compile( 
        "(?i)(?<=(?:from|into|update|join)\\s{1,1000}" 
        + "(?:w*[\\.]?\\w*(?:\\s{0,1000},\\s{0,1000})?)?" // 重复这里, 可以多个from后面的表 
        + "(?:\\w{1,1000}(?:\\s{0,1000},\\s{0,1000})?)?" 
        + "(?:\\w{1,1000}(?:\\s{0,1000},\\s{0,1000})?)?" 
        + ")(\\w+)" 
        ); 
Matcher m = p.matcher(str); 
List<String>   tables = new ArrayList<String>(); 
while (m.find()) { 
  tables.add(m.group()); 

System.out.println(tables);

2013年7月05日 18:21

1个答案 按时间排序 按投票排序

0 0

不要重复造轮子,有开源的java版本的sql解析器,比如JSqlParser,可以参考一下:http://jhaij.iteye.com/blog/968200

2013年7月05日 22:01

相关推荐

    Java使用正则表达式提取XML节点内容的方法示例

    Java中提供了对正则表达式的支持,使得开发者可以使用正则表达式来匹配和提取字符串中的内容。 二、XML节点内容提取方法 在Java中,可以使用正则表达式来提取XML节点内容。下面是一个简单的示例: ```java public ...

    基于 Java使用正则表达式解析sql语法树

    【作品名称】:基于 Java使用正则表达式解析sql语法树 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:基于 Java使用...

    用正则表达式提取SQL

    标题“用正则表达式提取SQL”涉及到的是在编程中如何使用正则表达式来从文本或代码中抓取SQL语句的相关知识。在IT领域,正则表达式(Regular Expression)是一种强大的文本处理工具,它能快速地匹配、查找、替换或者...

    使用Java正则表达式分析处理日志

    本篇将围绕“使用Java正则表达式分析处理日志”这一主题,探讨如何利用Java的正则表达式功能来提取、过滤和操作日志数据。 首先,我们需要理解正则表达式的基本概念。正则表达式(Regular Expression)是一种模式...

    Java正则表达式构造SQL语句

    Java正则表达式构造SQL语句Java正则表达式构造SQL语句Java正则表达式构造SQL语句

    SQL 语法分析,正则表达式解析C#文件;正则表达式实现的语法分析引擎

    实现一个正则表达式解析引擎需要理解正则表达式的语法和行为,以及如何在C#中使用这些概念。引擎通常会包含一个解析方法,该方法接受一个字符串输入,使用正则表达式进行匹配,并返回匹配的结果。同时,可能还需要...

    java正则表达式.zip

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它基于模式匹配的概念,能够高效地进行文本搜索、替换和解析。在Java中,正则表达式主要通过`java.util.regex`包来实现,提供了Pattern和Matcher两个核心...

    java使用正则表达式判断手机号的方法示例

    8. java正则表达式技巧大全:文章最后还提供了几个有关于java算法相关的内容,例如《Java正则表达式技巧大全》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java...

    常用正则表达式HTML,JAVA合集

    2. **Java中的正则表达式**: Java提供了`java.util.regex`包,通过`Pattern`和`Matcher`类支持正则表达式。以下是如何在Java中验证电话号码的一个例子: ```java import java.util.regex.Pattern; import java....

    Java根据正则表达式生成字符串—Xeger,automaton

    在Java编程语言中,处理字符串和正则表达式是一项常见的任务。正则表达式是一种强大的文本模式匹配工具,可以用于搜索、替换或者提取符合特定规则的字符串。在本篇文章中,我们将深入探讨如何利用Java中的Xeger和...

    Java源代码案例 - 使用正则表达式解析sql语法树.zip

    在"Java源代码案例 - 使用正则表达式解析sql语法树.zip"这个压缩包中,我们可以推测包含了一个使用Java实现的SQL语句解析器,可能通过正则表达式解析SQL语句的语法结构。 在SQL(Structured Query Language)中,...

    java编写的正则表达式解析器

    在Java编程语言中,实现正则表达式解析器可以帮助我们更高效地处理字符串,理解正则表达式的内部工作原理,并且可以自定义扩展其功能。本文将深入探讨Java中正则表达式的相关知识。 首先,Java中的正则表达式主要...

    Java正则表达式 Java 正则表达式

    Java正则表达式是Java语言中用于处理字符串的强大工具,它允许程序员进行复杂的字符串匹配、查找和替换操作。正则表达式(Regular Expression)是一种模式匹配语言,通过特定的语法来描述字符串的模式,用于在文本中...

    Java 使用正则表达式对象实现正则的获取功能

    在 Java 中,使用正则表达式对象可以实现各种字符串匹配和提取操作。正则表达式对象主要通过 Pattern 和 Matcher 两个类来实现。下面详细介绍如何使用正则表达式对象实现正则获取功能。 一、基本概念 在使用正则...

    java正则表达式匹配工具

    Java正则表达式匹配工具是IT领域中一种强大的文本处理工具,它利用正则表达式(Regular Expression)的规则来查找、替换或者提取文本中的特定模式。正则表达式是一种特殊的字符序列,能够帮助程序员或者用户高效地...

    JAVA正则表达式大全

    正则表达式的学习需要对元字符、量词、预查、后向引用等概念有深入理解,同时掌握Java中`Pattern`和`Matcher`的使用方法,结合实际案例进行实践,才能灵活运用到实际项目中。在处理字符串相关问题时,熟练掌握正则...

    运用正则表达式匹配所有表名

    写出匹配SQL语句中的所有表名,备忘记录 折磨了好久,正则表达式如下: 代码如下: \*\s+from\s+[\w\[\]]*\.?[\w\[\]]*\.?\[?(\b\w+)\]?[\r\n\s]* 支持各种表达式 SELECT * FROM Config SELECT * FROM

    java正则表达式提取html中的信息

    java实现用正则表达式的方法提取html中的信息,可以提取标题,正文,链接等。经过运行,没问题的

    delphi正则表达式解析器

    在Delphi中,通过使用正则表达式解析器,开发者可以方便地实现这些功能,而无需编写复杂的字符串处理逻辑。 TPerlRegEx是这个解析器的核心组件,它是对Perl正则表达式引擎的一种实现。Perl正则表达式因其强大的功能...

    在sqlserver2008r2版本中实现正则表达式

    有一些第三方工具和库,如Red-Gate的SQL Search,它使用正则表达式搜索SQL Server数据库中的文本。此外,还有SQL Server Management Studio (SSMS) 的插件,如RegEx Query Builder,可以帮助在查询中使用正则表达式...

Global site tag (gtag.js) - Google Analytics