java - 查找SQL语句列表中的元素

标签 java regex

我将 SQL 语句视为字符串,并希望计算 SQL 查询中最大列表中的元素数量。例如,以下字符串的最大计数为 5:

"select id from table where language in (\"ENGLISH\", \"SPANISH\", \"german\") and id in (1,2,3,4,5);"

有谁知道如何使用正则表达式来做到这一点?这很棘手,因为列表的内容可能是整数、字符串或元组。我能想到的最好的办法如下:

使用https://regex101.com/r/iNOxuO/1首先匹配字符串中的所有列表。然后,对于每场比赛,运行 https://regex101.com/r/kowtrV/1匹配并计算列表中的每个元素。

我遇到的问题是有一些边缘情况(第一个链接中的最后两行)我没有注意到。

谢谢!

最佳答案

一种方法是为您的边缘情况编写一些单独的表达式,然后使用交替,然后您将添加一个计数器。起始核心表达式将非常简单:

(?<=\(|,)[^,]+?(?=\)|,)

Demo 1

然后,当你写下其他内容时,想象一下

 some other expression 1

  some other expression 2

您可以使用逻辑或将它们连接起来:

some other expression 1| some other expression 2|(?<=\(|,)[^,]+?(?=\)|,)

您将弄清楚哪个表达式必须优先。编写所有这些表达式非常耗时。

关于java - 查找SQL语句列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58294600/

相关文章:

Java - 从文件中转义字符串中的双引号

java - 程序从 if-else 语句输出错误的选项

java - AWTUtilities 透明 JFrame

java - 正则表达式获取最后一个值

JavaScript 正则表达式?或者其他非常正确的文本输入方法

c++ - 无法使用 Boost 正则表达式构建

java - 将无状态 bean 注入(inject)单例 bean

java - 无法监视 HttpSession/Mockito

regex - 检测灵活的模式?

javascript - 使用字符位置进行正则表达式验证