我将 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/