正则表达式 - 替换多次出现

问题描述 投票:0回答:2

我有一个字符串,可以是以下任何一种情况:

  1. 测试1 / TEST2 / TEST3 / TEST4 / TEST5 /
  2. TEST1 / TEST2 / TEST3 / TEST4 //
  3. TEST1 / TEST2 / TEST3 ///
  4. 测试1 / TEST2 ////
  5. test1的/////

我的预期结果是

  1. 测试1 / TEST2 / TEST3 / TEST4 / TEST5
  2. TEST1 / TEST2 / TEST3 / TEST4
  3. TEST1 / TEST2 / TEST3
  4. TEST1 / TEST2
  5. test1如何使用正则表达式实现?

目前,我正在使用regexp_replace(col,“/ + /”,“/”)它正在工作但最后留下一个/。

regex apache-spark-sql impala
2个回答
0
投票

您可以使用以下正则表达式:

/\/+$/gm

并用空字符串替换('')。

正则表达式将匹配字符串末尾的一个或多个斜杠,然后将替换那些带有空字符串的斜杠,这意味着路径将不再以斜杠结尾。


0
投票

你可以用

regexp_replace(col, "/+$|(/){2,}", "\\1")

regex demo

细节

  • /+$ - 字符串末尾有一个或多个/
  • | - 或
  • (/){2,} - 两个或多个斜杠,最后一个将保存在捕获组1中,您可以使用\1占位符从替换模式中引用。
© www.soinside.com 2019 - 2024. All rights reserved.