java - 简单 SQL 正则表达式的问题

标签 java sql regex

我有一个任务将列从 SQL 语句中拆分出来。这对我来说效果很好,在“,”上进行了简单的 Java 分割。但现在我遇到了列内额外逗号的问题。 我想这个问题的答案很简单,但我不会想到。

示例:

来源:

"Col_A BIGINT , COL_B TIMESTAMP , COL_C DECIMAL(10,30) , COL_D VARCHAR(20)"

我想要的输出:

Array[0] = Col_A BIGINT
Array[1] = COL_B TIMESTAMP
Array[2] = COL_C DECIMAL(10,30)
Array[3] = COL_D VARCHAR(20)

真实(和显而易见的)输出:

Array[0] = Col_A BIGINT
Array[1] = COL_B TIMESTAMP
Array[2] = COL_C DECIMAL(10
Array[3] = 30)
Array[4] = COL_D VARCHAR(20)

明显的问题是两个小数之间的逗号 (COL_C)。

现在我想问你这个问题是否有一个好的解决方案。我真的想使用单个拆分来接收不同的列。但如何避免小数点描述处的错误分割。

希望大家能够理解我的问题。英语不是我的母语。

最佳答案

您只需使用正则表达式分割给定的字符串:,(?!\d)

找到后面不跟数字的,

代码示例:

System.out.println(Arrays.toString("Col_A BIGINT , COL_B TIMESTAMP , COL_C DECIMAL(10,30) , COL_D VARCHAR(20)".split(",(?!\\d)")));

Demo and Explaination of regex

关于java - 简单 SQL 正则表达式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38783688/

相关文章:

java - 将资源添加到 JAR

java - 使用构造函数创建父类(super class)和子类 - Java

java - 如何将字符串转换为JsonPatch?

mysql - 获取限制为前 1000 条记录的结果数量的更快方法?

R 正则表达式 : modifying digits of varying lengths at end of string

java - hibernate/Junit 测试 : Data still remain in session even after closing and opening it or cleaning it

python - 如何使用 Python 列表中的值查询 SQLite 数据库?

mysql - SQL-如何检查元素是否出现在一列中但不在另一列中

javascript - 正则表达式查找数字后跟精确的字符串匹配

javascript - 在需要搜索和替换的代码中转义括号(Sublime Text2)