[英]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.