如何使用正则表达式删除特定定界符的第一个实例之后,然后是特定定界符的最后一个实例之前的所有内容? - SQL

How to remove everything after first instance of specific delimiter, then before last instance of specific delimiter using Regex? - SQL

我想以特定格式格式化 table 列中的字符串。

输入Table:

file_paths
my-file-path/wefw/wefw/wef/wfweof=wefonwe/wfewoi=weoif/
my-file-path/wefw/wef/ef=wefonwe/wfewoi=weoif/
my-file-path/wef/wfe/wefw/wef/ef=wefonwe/wfewoi=weoif/

我想删除第一个 = 符号之后的所有内容,然后删除 = 符号之前和最后一个 / 符号之后的所有内容。

输出:

file_paths
my-file-path/wefw/wefw/wef/
my-file-path/wefw/wef/
my-file-path/wef/wfe/wefw/wef/

我正在考虑做类似的事情:

SELECT regexp_replace(file_paths, 'regex_here', '', 1, 'i')
FROM my_table

虽然我不确定如何为此编写正则表达式。如果有的话,我也愿意接受更简单的字符串操作方法。提前致谢!

您可以使用:

SELECT REGEXP_REPLACE(file_paths, '[^/=]+=.*', '', 1, 'i')
FROM my_table;

这是一个正则表达式 demo,表明替换逻辑正在运行。

您可以试试这个正则表达式:

^(.*?\/)(?=[^\/]+=).*$

并替换为第 1 组

Demo