簡體   English   中英

正則表達式:在第三個斜杠后替換 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 模式需要這個正則表達式。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM