ORACLE REGEX 在每个文件名后添加定界符

ORACLE REGEX to add delimiter after every file name

我有几个文件被多个 spaces 分隔,我写了一个正则表达式来删除所有白色 spaces 但不能在每个结束后添加分隔符文件。你能帮忙吗?

select regexp_replace(file,'[[:space:]]',',') from test_table
where id in ('1','2');

上面的select只有在文件之间有一个space时才有效。

  1. 请注意,文件可以是任何扩展名,我还看到文件名之间出现了几个 (.)。
  2. space数据不均匀

示例数据

filename :
this is the file sent.today .msg required mail.msg
aa.docx bb.docx cc.pdf

要求输出(每个文件后加分隔符(,)

filename :
this is the file sent.today .msg, required mail.msg
aa.docx, bb.docx, cc.pdf
regexp_replace(data,'(\.[a-zA-Z]+) ([a-zA-Z])',', ')

正则表达式中的每个组(括号后)将与它们在结果字符串中的编号相匹配(即 \1 和 \2)

另请注意,此正则表达式不适用于包含数字的文件类型。

您解释说可以将空格合并为单个空格。无论如何,这必须与“添加逗号”分开完成,所以假设完成了。

您需要对第一次的结果进行第二次 REGEXP 传递。像这样:

regexp_replace(result_of_first_pass, '\.(docx|pdf|msg) ', '., ')