只匹配指定字符最后一次出现的正则表达式



我需要创建一个正则表达式,以便从动态SQL创建表语句中删除最后一个逗号。我的查询基本上获取所有列名和表名并返回如下内容:

CREATE TABLE table_name ( column1 DATATYPE(1), column2 DATATYPE(20),);

我在data_length规范后面将逗号连接起来,因为在后面删除最后一个逗号会更容易。我使用REGEXP_REPLACE来做到这一点,但是由于Oracle不支持向前看或向后看,那么我不能使用这个正常工作的表达式:

,(?=[);])

所以我得到了另一个表达式:

();)?,

,但它不够精确,因为它占用了");"之前的所有逗号,我需要它来获取create table语句中的最后一个逗号。

);代替,);怎么样?这将有效地删除右括号前的最后一个逗号。

最新更新