簡體   English   中英

Java正則表達式模式匹配長度

[英]Java regex pattern matching length

我輸入的字符串為

input = "AAA10.50.30.20"

input.replaceAll("10.([01]?\\d\\d?|2[0-4]\\d|25[0-5]).([01]?\\d\\d?|2[0-4]\\d|25[0-5]).([01]?\\d\\d?|2[0-4]\\d|25[0-5])",
                        "X");

輸出為: "AAAX"

但是我希望輸出為"AAAXXXXXXXXXXX"

它應將IP替換為多個'X' ,這相當於IP地址中的字符數

如果只想用X替換所有數字和點,則調用str.replaceAll("\\\\d|\\\\.", "X") 如果要匹配確切的模式,請使用類似

str.replaceAll("(?:\\d{1,3}\\.){3}\\d{1,3}", "X")
String input =  "AAA10.50.30.20";
Pattern p = p = Pattern.compile("10.([01]?\\d\\d?|2[0-4]\\d|25[0-5]).([01]?\\d\\d?|2[0-4]\\d|25[0-5]).([01]?\\d\\d?|2[0-4]\\d|25[0-5])");
Matcher m = p.matcher(input);
String result = input;
while(m.find()){
    char[] replacement = new char[m.end()-m.start()];
    Arrays.fill(replacement, 'X');
    result = result.substring(0, m.start())
        + new String(replacement)
        + result.substring(m.end());
}
return result;

問題是您用正則表達式搜索IP地址。 這給您1個匹配項-IP地址。 然后,將其替換為X,從而獲得AAAX。 如何獲取正則表達式匹配的字符串,然后將所有數字替換為X呢?

暫無
暫無

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

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