簡體   English   中英

java - String.replaceAll替換不在pattern中的所有字符

[英]java - String.replaceAll to replace all characters not in pattern

我有一個Java正則表達式:

^[a-zA-Z_][a-zA-Z0-9_]{1,126}$

它的意思是:

  • 從字母字符或下划線字符開始。
  • 后續字符可以包括字母,數字或下划線。
  • 長度在1到127個字符之間。

現在,我想用下划線替換具有不在該正則表達式中的字符的字符串。

例:

final String label = "23_fgh99@#";
System.out.println(label.replaceAll("^[^a-zA-Z_][^a-zA-Z0-9_]{1,126}$", "_"));

但結果仍然是23_fgh99@#

如何將其“轉換”為_3_fgh99__

使用此代碼

final String label = "23_fgh99@#";
System.out.println(label.replaceAll("^[^a-zA-Z_]|(?<!^)[^a-zA-Z0-9_]", "_"));

它輸出_3_fgh99__

要刪除“不在原始模式中”的內容,您需要取消第一個字符類並僅檢查開頭的字符( ^[^a-zA-Z_] ),然后檢查不是在開頭的其他字符否定的第二個字符類( (?<!^)[^a-zA-Z0-9_] )。 然后,我們只使用交替符號| 在1次更換操作中應用這兩種模式。

暫無
暫無

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

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