[英]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 模式需要這個正則表達式。
Ps 為什么在第三個斜線之后? 因為因為數字可以在開頭,但不需要更改( /path/to_1/something/1234/end
)
您可以使用
(?:\G(?!^)|^((?:/[^/]*){3}/))(\D*)\d
作為正則表達式和$1$2#
作為替換。
請參閱正則表達式演示。
詳情:
(?:\G(?!^)|^((?:/[^/]*){3}/))
- 上一場比賽的結束( \G(?!^)
)或( |
)開始字符串 + 三次出現/
,然后是零個或多個非斜杠,然后是一個斜杠字符被捕獲到第 1 組( ^((?:/[^/]*){3}/)
)(\D*)
- 第 2 組:任何零個或多個非數字\d
- 一個數字替換是第 1 組 + 第 2 組值和#
字符的串聯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.