最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用正則表達式匹配并替換字符串中的IP地址

 更新時間:2026年06月10日 09:04:25   作者:Zella折耳根  
在 Java 開發(fā)中,正則表達式是處理字符串匹配、查找、替換的神器,尤其在數(shù)據(jù)清洗、格式校驗、文本處理場景中不可或缺,今天我們通過一道經(jīng)典的編程題 ——匹配并替換字符串中的 IP 地址,從零拆解正則表達式的核心用法,需要的朋友可以參考下

引言

在 Java 開發(fā)中,正則表達式是處理字符串匹配、查找、替換的神器,尤其在數(shù)據(jù)清洗、格式校驗、文本處理場景中不可或缺。今天我們通過一道經(jīng)典的編程題 ——匹配并替換字符串中的 IP 地址,從零拆解正則表達式的核心用法,掌握PatternMatcher類的實戰(zhàn)技巧。

一、編程題目需求

給定字符串 登錄網(wǎng)站: 222.128.89.253,完成兩個核心任務(wù):

  1. 用正則表達式匹配出字符串中的 IP 地址,輸出其出現(xiàn)位置和內(nèi)容;
  2. 將匹配到的 IP 地址替換為 202.192.78.56,輸出替換后的結(jié)果。

同時需要補全代碼模板中的【代碼 1】和【代碼 2】,實現(xiàn)完整功能。

二、完整可運行代碼

首先給出修正并補全后的最終代碼(原類名與文件名不一致,已統(tǒng)一為ReplaceIP.java):

import java.util.regex.*;
public class ReplaceIP {
    public static void main(String args[]) {
        String str = "登錄網(wǎng)站: 222.128.89.253";
        Pattern pattern;
        Matcher matcher;
        // 正則表達式:匹配標(biāo)準IPv4地址
        String regex = "[\\d]{1,3}[.][\\d]{1,3}[\\d]{1,3}[.][\\d]{1,3}";
        // 代碼1:初始化Pattern模式對象(編譯正則表達式)
        pattern = Pattern.compile(regex);
        // 代碼2:初始化Matcher匹配對象(綁定字符串與模式)
        matcher = pattern.matcher(str);
        String IP = "";
        // 循環(huán)查找所有匹配的子串
        while (matcher.find()) {
            IP = matcher.group(); // 獲取匹配到的IP地址
            System.out.print(matcher.start() + "位置出現(xiàn):"); // 獲取匹配起始索引
            System.out.println(IP);
        }
        System.out.printf("將%s 替換為 202.192.78.56\n", IP);
        // 替換所有匹配到的內(nèi)容
        String result = matcher.replaceAll("202.192.78.56");
        System.out.println(result);
    }
}

運行結(jié)果

5位置出現(xiàn):222.128.89.253
將222.128.89.253 替換為 202.192.78.56
登錄網(wǎng)站: 202.192.78.56

三、核心知識點拆解

1. Java 正則表達式的核心類

Java 處理正則表達式的 API 位于java.util.regex包下,核心是兩個類:Pattern(模式類)Matcher(匹配器類)

(1)Pattern 類:正則表達式的編譯表示

  • 作用:將字符串形式的正則表達式編譯為模式對象,是正則的 “模板”;
  • 關(guān)鍵方法:Pattern.compile(String regex) —— 靜態(tài)方法,編譯正則表達式,返回Pattern對象(對應(yīng)題目【代碼 1】)。
  • 特點:Pattern是不可變類,線程安全,一個模式對象可重復(fù)使用。

(2)Matcher 類:字符串匹配引擎

  • 作用:綁定待匹配的字符串Pattern 模式,執(zhí)行匹配、查找、替換操作;
  • 關(guān)鍵方法:pattern.matcher(CharSequence input) —— 創(chuàng)建Matcher對象(對應(yīng)題目【代碼 2】)。
  • 核心方法:
    • find():掃描字符串,查找下一個匹配的子串,找到返回true;
    • group():獲取最近一次匹配到的子串;
    • start():獲取匹配子串的起始索引;
    • replaceAll(String replacement):替換所有匹配到的子串。

2. 正則表達式語法解析(匹配 IP 地址)

題目中的正則:[\\d]{1,3}[.][\\d]{1,3}[.][\\d]{1,3}[.][\\d]{1,3} 逐部分拆解:

  • [\\d]:匹配0-9 的數(shù)字\\d是數(shù)字的轉(zhuǎn)義寫法);
  • {1,3}:限定前面的字符出現(xiàn) 1~3 次(IP 地址每段數(shù)字范圍 0-255,最多 3 位);
  • [.]:匹配點號.(正則中.是通配符,必須用[]\\轉(zhuǎn)義);
  • 整體:匹配數(shù)字.數(shù)字.數(shù)字.數(shù)字格式的字符串,完美適配 IPv4 地址。

3. 代碼關(guān)鍵邏輯

  1. 編譯正則Pattern.compile(regex) 生成模式對象,避免重復(fù)編譯提升效率;
  2. 創(chuàng)建匹配器pattern.matcher(str) 將字符串與正則綁定;
  3. 循環(huán)查找matcher.find() 遍歷所有匹配項,group()獲取匹配內(nèi)容,start()獲取位置;
  4. 全局替換replaceAll() 一次性替換所有匹配到的 IP 地址。

四、常見坑點總結(jié)

  1. 類名與文件名不一致:原模板文件名是ReplaceErrorWord.java,但類名是ReplaceIP,Java 要求類名必須與文件名完全一致,否則編譯報錯;
  2. 正則轉(zhuǎn)義問題.在正則中是通配符,直接寫會匹配任意字符,必須用[.]\\.轉(zhuǎn)義;
  3. Matcher使用順序:必須先調(diào)用find()匹配成功,才能調(diào)用group()/start(),否則會拋異常;
  4. replaceAll作用域:替換的是所有匹配項,如果只想替換第一個,用replaceFirst()。

五、擴展優(yōu)化

題目中的正則能匹配基礎(chǔ) IP,但無法校驗 IP 合法性(比如999.999.999.999也會匹配),優(yōu)化后的標(biāo)準 IPv4 正則:

String regex = "((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)";

這個正則會嚴格限制每段數(shù)字為0-255,適合生產(chǎn)環(huán)境使用。

六、總結(jié)

通過這道題,我們掌握了 Java 正則表達式的標(biāo)準使用流程

  1. 編寫正則表達式 → 2. 編譯為Pattern對象 → 3. 創(chuàng)建Matcher匹配器 → 4. 執(zhí)行查找 / 替換操作。

Pattern+Matcher是 Java 正則的核心組合,熟練掌握后,無論是手機號、郵箱、IP 格式校驗,還是字符串批量替換,都能輕松搞定!

以上就是Java使用正則表達式匹配并替換字符串中的IP地址的詳細內(nèi)容,更多關(guān)于Java正則表達式匹配并替換IP地址的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java列出2到100之間所有素數(shù)的方法

    Java列出2到100之間所有素數(shù)的方法

    這篇文章主要介紹了Java列出2到100之間所有素數(shù)的方法,涉及java數(shù)值運算的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Java HashMap底層實現(xiàn)原理

    Java HashMap底層實現(xiàn)原理

    HashMap在不同的JDK版本下的實現(xiàn)是不同的,在JDK1.7時,HashMap 底層是通過數(shù)組+鏈表實現(xiàn)的;而在JDK1.8時,HashMap底層是通過數(shù)組+鏈表或紅黑樹實現(xiàn)的,本詳細介紹了HashMap底層是如何實現(xiàn)的,需要的朋友可以參考下
    2023-05-05
  • Java面試題及答案集錦(基礎(chǔ)題122道,代碼題19道)

    Java面試題及答案集錦(基礎(chǔ)題122道,代碼題19道)

    本文是小編收集整理的關(guān)于java基礎(chǔ)面試題及答案集錦,基礎(chǔ)題目有122道,代碼題目有19道,非常不錯,值得收藏,需要的朋友參考下
    2017-01-01
  • SpringCloud集成Micrometer Tracing的代碼工程

    SpringCloud集成Micrometer Tracing的代碼工程

    Micrometer Tracing 是一個用于微服務(wù)架構(gòu)的追蹤庫,它提供了一種簡單而強大的方式來收集和報告分布式系統(tǒng)中的性能和調(diào)用鏈信息,Micrometer Tracing 旨在幫助開發(fā)者和運維人員理解微服務(wù)之間的交互,本文給大家介紹了如何在 Spring Cloud 集成 Micrometer Tracing
    2024-12-12
  • Java 日期轉(zhuǎn)換詳解及實例代碼

    Java 日期轉(zhuǎn)換詳解及實例代碼

    這篇文章主要介紹了Java 日期轉(zhuǎn)換詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • java實現(xiàn)計算器功能

    java實現(xiàn)計算器功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • SpringBoot項目打包運行jar包的實現(xiàn)示例

    SpringBoot項目打包運行jar包的實現(xiàn)示例

    本文主要介紹了SpringBoot項目打包運行jar包的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • java web實現(xiàn)簡單留言板功能

    java web實現(xiàn)簡單留言板功能

    這篇文章主要為大家詳細介紹了java web實現(xiàn)簡單留言板功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • java?Export大量數(shù)據(jù)導(dǎo)出和打包

    java?Export大量數(shù)據(jù)導(dǎo)出和打包

    這篇文章主要為大家介紹了java?Export大量數(shù)據(jù)的導(dǎo)出和打包實現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Mybatis 實現(xiàn)打印sql語句的代碼

    Mybatis 實現(xiàn)打印sql語句的代碼

    這篇文章主要介紹了Mybatis 實現(xiàn)打印sql語句的代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07

最新評論

盘锦市| 青龙| 灵宝市| 钦州市| 同江市| 康乐县| 错那县| 石柱| 重庆市| 罗城| 洞头县| 铅山县| 呼图壁县| 靖宇县| 罗城| 定结县| 金平| 两当县| 慈溪市| 宁国市| 夏河县| 石嘴山市| 新余市| 抚州市| 灵川县| 育儿| 桃园市| 南涧| 大丰市| 二手房| 潜山县| 舟曲县| 马山县| 旬阳县| 玉溪市| 铜鼓县| 琼中| 项城市| 康保县| 四川省| 江华|