从 URL 中删除特定单词的正则表达式

Regex to remove the specific word from URL

在 Dynatrace 中,有 URLs 包含动态的单词。想要使用正则表达式

从 URL 中删除该动态词

以下是不同的网址

预期输出

我能够管理这个正则表达式

(\S+?)ab_cd(.*)

但它不适用于动态值和所有 URL。 如何改进正则表达式以删除动态值?

第一部分似乎是固定的,您在“/”或“?”之后修剪所有内容。鉴于此,也许你想要这样的东西:

s/(\/asd\/fdsadx\/sadsa\/)[^/?]+(.*)//

这将捕获 \1 中的头部,忽略一组不是 '\' 或 '?' 的字符,并捕获 \2 中的尾部。

您可以使用 2 个捕获组并在匹配正斜杠后匹配下划线部分

^(\S+/)[^\s_]+_[^\s_/?]+(.*)
  • ^ 字符串开头
  • (\S+/) 捕获 组 1,匹配 1+ 次非空白字符后跟 /
  • [^\s_]+ 匹配任何字符 1 次以上,空白字符除外或 _
  • _字面匹配
  • [^\s_/?]+ 匹配任何字符 1 次以上,空白字符除外,_/?
  • (.*) 捕获 组 2 匹配除换行符之外的任何字符 0 次以上

Regex demo

在替换中使用 2 个捕获组,例如 </code></p> <p>如果您想匹配国家/地区代码并且您知道它们由字符 a-zA-Z 组成,您可以使 <a href="https://www.regular-expressions.info/charclass.html" rel="nofollow noreferrer">character class</a> 更具体</p> <pre><code>^(\S+/)[A-Za-z]+_[A-Za-z]+(.*)

Regex demo