如何使用正则表达式从字符串中去除结束日期? - SQL
How to strip ending date from string using Regex? - SQL
我想以特定格式格式化 table 列中的字符串。
输入table:
file_paths
my-file-path/wefw/wefw/2022-03-20
my-file-path/wefw/2022-01-02
my-file-path/wef/wfe/wefw/wef/2021-02-03
my-file-path/wef/wfe/wef/
我想删除最后一个 /
符号之后的所有内容,如果它之后的唯一内容类似于日期(即 YYYY-MM-dd 或 ####-##-##)。
输出:
file_paths
my-file-path/wefw/wefw/
my-file-path/wefw/
my-file-path/wef/wfe/wefw/wef/
my-file-path/wef/wfe/wef/
我正在考虑做类似的事情:
SELECT regexp_replace(file_paths, 'regex_here', '', 1, 'i')
FROM my_table
虽然我不确定如何为此编写正则表达式。如果有的话,我也愿意接受更简单的字符串操作方法。提前致谢!
您可以使用这个正则表达式:
^(.*?\/)\d{4}-\d{2}-\d{2}$
您可以试试这个查询:
select regexp_replace(file_paths, '^(.*?\/)\d{4}-\d{2}-\d{2}$','')
您可以使用
REGEXP_REPLACE ( file_paths, '/[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$', '/' )
参见regex demo。
/[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$
是 POSIX ERE 兼容模式匹配
/
- 斜杠
[0-9]{4}
- 四位数
-
- 一个连字符
[0-9]{1,2}
- 一位或两位数
-[0-9]{1,2}
- 一个连字符和一个或两个数字
$
- 字符串结尾。
如果您的值可以包含尾随空格,请在 $
之前插入 [[:space:]]*
:/[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}[[:space:]]*$
。
我想以特定格式格式化 table 列中的字符串。
输入table:
file_paths
my-file-path/wefw/wefw/2022-03-20
my-file-path/wefw/2022-01-02
my-file-path/wef/wfe/wefw/wef/2021-02-03
my-file-path/wef/wfe/wef/
我想删除最后一个 /
符号之后的所有内容,如果它之后的唯一内容类似于日期(即 YYYY-MM-dd 或 ####-##-##)。
输出:
file_paths
my-file-path/wefw/wefw/
my-file-path/wefw/
my-file-path/wef/wfe/wefw/wef/
my-file-path/wef/wfe/wef/
我正在考虑做类似的事情:
SELECT regexp_replace(file_paths, 'regex_here', '', 1, 'i')
FROM my_table
虽然我不确定如何为此编写正则表达式。如果有的话,我也愿意接受更简单的字符串操作方法。提前致谢!
您可以使用这个正则表达式:
^(.*?\/)\d{4}-\d{2}-\d{2}$
您可以试试这个查询:
select regexp_replace(file_paths, '^(.*?\/)\d{4}-\d{2}-\d{2}$','')
您可以使用
REGEXP_REPLACE ( file_paths, '/[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$', '/' )
参见regex demo。
/[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$
是 POSIX ERE 兼容模式匹配
/
- 斜杠[0-9]{4}
- 四位数-
- 一个连字符[0-9]{1,2}
- 一位或两位数-[0-9]{1,2}
- 一个连字符和一个或两个数字$
- 字符串结尾。
如果您的值可以包含尾随空格,请在 $
之前插入 [[:space:]]*
:/[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}[[:space:]]*$
。