簡體   English   中英

Java正則表達式用下划線替換字符串中的所有特殊字符,同時考慮刪除前導、尾隨、多個下划線

[英]Java regex to replace all special characters in a String with an underscore also considering removing leading,trailing,multiple underscores

我需要一個正則表達式來用單個下划線替換所有考慮多個的特殊字符,並且如果字符串包含尾隨和前導特殊字符,也不要添加尾隨和前導下划線,我嘗試了以下操作,但它似乎不起作用.

String myDefaultString = "_@##%Default__$*_123_"
myDefaultString.replaceAll("[\\p{Punct}&&[^_]]", "_")

我的最終結果應該是Default_123 ,其中正則表達式需要考慮前導下划線並刪除它們,將下划線保留在Default123之間,但也應該刪除字符串之間的尾隨和多個下划線。

還嘗試了以下正則表達式

myDefaultString.replaceAll("[^a-zA-Z0-9_.]+", "_")

但似乎不起作用,是我想要實現的目標非常復雜還是有更好的方法來做到這一點?

您可以在replaceAll使用此正則表達式:

String str = "_@##%Default__$*_123_";
str = str.replaceAll("[\\p{Punct}&&[^_]]+|^_+|\\p{Punct}+(?=_|$)", "");
//=> "Default_123"

正則表達式演示

正則表達式詳情:

  • [\\\\p{Punct}&&[^_]]+ : 匹配 1+ 個不是_標點字符
  • | : 或者
  • ^_+ : 在開始時匹配 1+ 個下划線
  • | : 或者
  • \\\\p{Punct}+(?=_|$) :匹配 1+ 個標點字符,如果后面跟有_或字符串結尾。

暫無
暫無

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

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