正则表达式:在第三个斜杠后替换 URL 上的所有数字
Regexp: replace all digits on URL after third slash
如何用正则表达式替换字符 #### 上第三个斜杠后 URL 中的所有数字?
在这种情况下,# 的数量必须对应于替换数字的数量。
数字可以位于多个斜线部分。
另外,数字的位置不是固定的,而是正好在第三个斜杠之后
示例:
/path/to/something/1234/end
/path/to/something/12/1234/end
收件人:
/path/to/something/####/end
/path/to/something/##/####/end
我尝试使用表达式,但没有给出所需的结果:
"(?<=/)\d+(?=/|$), #####"
在 Logstash(gsub 函数)中实现 grok 模式需要此正则表达式。
P.s。为什么在第三个斜线之后?因为因为数字可以在开头,但是不需要改变(/path/to_1/something/1234/end
)
您可以使用
(?:\G(?!^)|^((?:/[^/]*){3}/))(\D*)\d
作为正则表达式,#
作为替换。
参见regex demo。
详情:
(?:\G(?!^)|^((?:/[^/]*){3}/))
- 上一场比赛结束 (\G(?!^)
) 或 (|
) 字符串开始 + 出现三次 /
然后零个或多个 non-slash shars 然后一个斜杠字符捕获到组 1 (^((?:/[^/]*){3}/)
)
(\D*)
- 第 2 组:任何零个或多个 non-digits
\d
- 一个数字
替换是组 1 + 组 2 值和 #
字符的串联。
如何用正则表达式替换字符 #### 上第三个斜杠后 URL 中的所有数字? 在这种情况下,# 的数量必须对应于替换数字的数量。 数字可以位于多个斜线部分。 另外,数字的位置不是固定的,而是正好在第三个斜杠之后
示例:
/path/to/something/1234/end
/path/to/something/12/1234/end
收件人:
/path/to/something/####/end
/path/to/something/##/####/end
我尝试使用表达式,但没有给出所需的结果:
"(?<=/)\d+(?=/|$), #####"
在 Logstash(gsub 函数)中实现 grok 模式需要此正则表达式。
P.s。为什么在第三个斜线之后?因为因为数字可以在开头,但是不需要改变(/path/to_1/something/1234/end
)
您可以使用
(?:\G(?!^)|^((?:/[^/]*){3}/))(\D*)\d
作为正则表达式,#
作为替换。
参见regex demo。
详情:
(?:\G(?!^)|^((?:/[^/]*){3}/))
- 上一场比赛结束 (\G(?!^)
) 或 (|
) 字符串开始 + 出现三次/
然后零个或多个 non-slash shars 然后一个斜杠字符捕获到组 1 (^((?:/[^/]*){3}/)
)(\D*)
- 第 2 组:任何零个或多个 non-digits\d
- 一个数字
替换是组 1 + 组 2 值和 #
字符的串联。