簡體   English   中英

使用正則表達式刪除Java子字符串

[英]Remove Java substring with regex

我正在嘗試刪除/#字符之間的字符,我的字符串如下:

platform:/this/is/a/path/contentToRemove#OtherContent

我執行的替換是:

aString.replaceAll("/.*?#", "#")

但是我得到的回報是:

platform:#OtherContent

當我想要的時候:

platform:/this/is/a/path/#OtherContent

我應該如何使用Regex正確完成此操作? 還有其他我想解決的解決方案嗎?

謝謝。

那是因為您使用的是貪婪模式。 從第一次出現的/到結束模式,它都會吃掉。 您必須使用:

aString.replaceAll("(.*/).*?#", "$1#");

這將獲取所有內容,直到最后一個/和組( $1 ),並將其替換為組1和#的內容。

使用否定的字符類:

aString = aString.replaceAll("/[^/#]*#", "/#");
//=> platform:/this/is/a/path/#OtherContent

[^/#]*是一個否定的字符類,它將找到0個或多個不是/#字符。

正則演示

aString.replaceAll("[^/]+#", "#");

演示與說明

這應該可以工作aString.replaceAll("/[^/]*#", "#")

上面的正則表達式匹配斜杠/和任意數量的非斜杠[^/]字符,后跟哈希號#

aString.replaceAll("(.*/).*#(.*)", "$1#$2");  

這將捕獲所有字符串直到最后一個/並將該字符串放入組1,然后它將查找#,隨后的字符串將放入組2

暫無
暫無

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

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