当前位置: 首页 > 知识库问答 >
问题:

使用正则表达式在Java中插入SQL查询以获取其部分

王涵育
2023-03-14

我有一个声明:

INSERT INTO table_name (c1,c2,c3) VALUES ('',N'user','','1970-01-01 00:00:00.0')

我想创建一个正则表达式,运行会给我以下结果:

table_name
c1,c2,c3
'',N'user','','1970-01-01 00:00:00.0'

基于这个问题和答案,我创建了这样的东西:

final String regex = "((?<=(INSERT\\sINTO\\s))[\\w\\d_]+(?=\\s+))|((?<=\\()([\\w\\d_,]*|[N?'?.*\\s?.*'?,]*)+(?=\\)))";

然而,我的答案只是:

table_name
c1,c2,c3
'',N'user',''

你能帮我告诉我哪里做错了吗?

我要测试的代码:

final String regex = "((?<=(INSERT\\sINTO\\s))[\\w\\d_]+(?=\\s+))|((?<=\\()([\\w\\d_,]*|[N?'?.*\\s?.*'?,]*)+(?=\\)))";

        String test = "INSERT INTO table_name (c1,c2,c3) VALUES ('',N'user','','1970-01-01 00:00:00.0')";

        Pattern re = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);

        Matcher m = re.matcher(test);
        while (m.find())
        {
            System.out.println(m.group(0));
        }

共有1个答案

隆飞驰
2023-03-14

找到了!:)

((?<=(INSERT\\sINTO\\s))[\\w\\d_]+(?=\\s+))|((?<=\\()([\\w?\\d?_,]*|[(?:^|\\s)'([^']*?)'(?:$|\\s),]*)+(?=\\)))
 类似资料:
  • 问题内容: 我想使用Regex解析Java中的插入查询。 以下是示例字符串 我想要以下输出: 我已经尝试过以下正则表达式: 输出是 请帮助我如何获得期望的结果。 问题答案: 您可以尝试以下正则表达式: 解释: 比赛之间和 比赛之间和 这是一个示例代码: 输出如下:

  • 有从字符串中提取SQL查询的正则表达式吗?我不想验证任何SQL语法,而是只想提取一组SQL命令。这是为了以灵活的方式解析给定的SQL文件/字符串。 给出了以下SQL文件/字符串示例: 一些伪代码示例是:。在将来,我希望用所有(可能的)命令来扩展它。 查找具有以下任一项的起始匹配:(UPDATESELECTINSERTINTO) 零个或多个(包括空格和换行符) 停止在处,它分隔SQL查询。 只要通过

  • 输出为 请帮助我如何得到想要的结果。

  • 问题内容: 我正在尝试同时接收模式和字符串,并返回组名的映射->匹配结果。 例: 我想返回一个包含“ user”作为键及其匹配值的映射。 问题是我似乎无法从Java regex api获取组名。我只能按名称或按索引获取匹配的值。我没有组名列表,Pattern和Matcher似乎都没有公开此信息。我检查了它的来源,似乎信息就在那里- 只是不向用户公开。 我尝试了Java的java.util.rege

  • 主要内容:查询以特定字符或字符串开头的记录,查询以特定字符或字符串结尾的记录,替代字符串中的任意一个字符,匹配多个字符,匹配指定字符串,匹配指定字符串中的任意一个,匹配指定字符以外的字符,使用{n}或者{nm}来指定字符串连续出现的次数正则表达式主要用来查询和替换符合某个模式(规则)的文本内容。例如,从一个文件中提取电话号码,查找一篇文章中重复的单词、替换文章中的敏感语汇等,这些地方都可以使用正则表达式。正则表达式强大且灵活,常用于非常复杂的查询。 MySQL 中,使用 REGEXP 关键字指定

  • 本文向大家介绍mysql中如何使用正则表达式查询,包括了mysql中如何使用正则表达式查询的使用技巧和注意事项,需要的朋友参考一下 基本形式 属性名 regexp ‘匹配方式' 正则表达式的模式字符 ^ 匹配字符开始的部分 eg1: 从info表name字段中查询以L开头的记录 select * from info where name regexp '^L'; eg2: 从info表name字段