簡體   English   中英

正則表達式匹配所有內容,直到最后一次出現 /

[英]regular expression to match everything until the last occurrence of /

使用正則表達式(Ant 中的replaceregexp)如何匹配(然后替換)從一行的開頭到最后一次出現的斜杠的所有內容?

我需要從以下任何一個開始:

../../replace_this/keep_this

../replace_this/replace_this/Keep_this

/../../replace_this/replace_this/Keep_this

並將它們變成這樣:

what_I_ addedKeep_this

看起來它應該很簡單,但我不明白。 我已經制作了正則表達式,可以識別最后一個斜杠並從那里匹配到行尾,但我需要的是一個匹配從一行開始到最后一個斜杠的所有內容的正則表達式,因此我可以將其全部替換.

這是用於讀取一堆 .txt 文件並轉換它在其中找到的任何鏈接的 Ant 構建文件。 我只想使用replaceregexp,而不是變量或屬性。 如果可能的話。

你可以這樣匹配:

.*\/

並替換為您的文本。

演示

你想要做的是貪婪地匹配,模式的最長可能匹配,通常是默認的,但匹配到'/'的最后一個實例。

那將是這樣的:

 .*\/

解釋:

. any character
* any and all characters after that (greedy)
\/ the slash escaped, this will stop at the **last** instance of '/'

你可以在這里看到它的實際效果: http : //regex101.com/r/pI4lR5

選項1

  • 搜索: ^.*/
  • 替換: Empty string
  • 因為*量詞是貪婪的,所以^.*/將匹配從行首到最后一個斜杠。 所以你可以直接用一個空字符串替換它,你就會得到你想要的文本。

選項 2

  • 搜索: ^.*/(.*)
  • 替換:第 1 組(通常,語法為$1\\1 ,不確定 Ant)
  • 同樣, ^.*/匹配最后一個斜杠。 然后使用(.*)將行的末尾捕獲到 Group 1,並將整個匹配替換為 Group 1。
  • 在我看來,沒有理由選擇這個選項,但理解它很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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