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

Java?正則表達(dá)式URL?匹配與源碼全解析

 更新時(shí)間:2025年04月18日 14:44:06   作者:XU磊260  
在Web應(yīng)用開發(fā)中,我們經(jīng)常需要對(duì)URL進(jìn)行格式驗(yàn)證,今天我們結(jié)合?Java?的?Pattern?和?Matcher?類,深入理解正則表達(dá)式在實(shí)際應(yīng)用中的強(qiáng)大功能,并剖析一段實(shí)際的?Java?示例源碼,感興趣的朋友一起看看吧

在 Web 應(yīng)用開發(fā)中,我們經(jīng)常需要對(duì) URL 進(jìn)行格式驗(yàn)證。今天我們結(jié)合 Java 的 PatternMatcher 類,深入理解正則表達(dá)式在實(shí)際應(yīng)用中的強(qiáng)大功能,并剖析一段實(shí)際的 Java 示例源碼。

package com.RegExpInfo;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Exercise02 {
    public static void main(String[] args) {
//        String content="https://";
//        String content="http://";
//        String content="https://" +
//                "www.bilibili.com/";
//        String content="https://" +
//                "www.bilibili.com/" +
//                "video/" +
//                "BV1fh411y7R8?spm_id_from=333.788.player.switch&vd_" +
//                "source=6fe96db28441a84c79edc35a022cf1c5&p=895" ;
//        String content="https://" +
//                "www.bilibili.com" ;
        String content="https://blog.csdn.net/keshi12354?spm=1000.2115.3001.5343";
//        String regExp="^((https|http)://)";
//        (2)
//        String regExp="^((https|http)://)([\\w-]+\\.)+[\\w-]+\\/";
//        (3)
        String regExp="^((https|http)://)([\\w-]+\\.)+[\\w-]+(\\/([\\w-_?=&./]*))?$";
//        String regExp="^((https|http)://)([\\w-]+\\.)+[\\w-]+(\\/([\\w-_?=&./]*))?$";
        Pattern pattern = Pattern.compile(regExp);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println(matcher.group(0));
        }
    }
}

1.正則表達(dá)式分解:

分布實(shí)現(xiàn):
1. 基礎(chǔ)協(xié)議匹配 (1)

 String regExp="^((https|http)://)";

功能:只匹配URL開頭的協(xié)議部分

匹配內(nèi)容http:// 或 https://

結(jié)構(gòu)

^ 表示字符串開始

(https|http) 匹配"https"或"http"

:// 匹配協(xié)議分隔符

目的:先確保能正確識(shí)別URL的協(xié)議部分

2. 添加域名匹配 (2)

 String regExp="^((https|http)://)([\\w-]+\\.)+[\\w-]+\\/";

新增功能:在協(xié)議后添加域名和路徑的基本匹配

匹配內(nèi)容:如 http://example.com/

新增結(jié)構(gòu)

([\\w-]+\\.)+ 匹配一個(gè)或多個(gè)域名部分(如"www."或"sub.")

\\w 匹配單詞字符(字母、數(shù)字、下劃線)

- 匹配連字符

+ 表示一次或多次

\\. 匹配點(diǎn)號(hào)

[\\w-]+ 匹配頂級(jí)域名(如"com")

\\/ 匹配結(jié)尾的斜杠

目的:擴(kuò)展匹配完整的域名結(jié)構(gòu)

3. 添加路徑和查詢參數(shù)匹配 (3)

 String regExp="^((https|http)://)([\\w-]+\\.)+[\\w-]+(\\/([\\w-_?=&./]*))?$";

新增功能:支持可選的路徑和查詢參數(shù)

匹配內(nèi)容:如 http://example.com/path?param=value

新增結(jié)構(gòu)

(\\/([\\w-_?=&./]*))?

\\/ 匹配路徑開始的斜杠

[\\w-_?=&./]* 匹配路徑和查詢參數(shù)

包含字母、數(shù)字、下劃線、連字符、問號(hào)、等號(hào)、&、點(diǎn)和斜杠

? 表示整個(gè)路徑部分是可選的

$ 表示字符串結(jié)束

目的:使正則表達(dá)式能夠匹配帶路徑和參數(shù)的完整URL

 4. 最終優(yōu)化版本

String regExp="^((https|http)://)?([\\w-]+\\.)+[\\w-]+(\\/([\\w-_?=&./]*))?$";

關(guān)鍵改進(jìn):使協(xié)議部分變?yōu)榭蛇x

匹配內(nèi)容:現(xiàn)在可以匹配:

帶協(xié)議的URL:http://example.com/path

不帶協(xié)議的URL:example.com/path

修改點(diǎn)

在協(xié)議部分 ((https|http)://) 后添加了 ? 使其變?yōu)榭蛇x

目的:提高正則表達(dá)式的靈活性,適應(yīng)更多使用場(chǎng)景

5.設(shè)計(jì)思想總結(jié)

漸進(jìn)式開發(fā):從簡(jiǎn)單到復(fù)雜逐步構(gòu)建正則表達(dá)式

模塊化設(shè)計(jì):每個(gè)部分都有明確的功能劃分(協(xié)議、域名、路徑)

靈活性增強(qiáng):通過添加可選標(biāo)記(?)使表達(dá)式更通用

邊界明確:始終使用^$確保匹配整個(gè)字符串

字符集合理定義:使用[\w-]等字符集準(zhǔn)確描述允許的字符

這種分步構(gòu)建的方法不僅使正則表達(dá)式更易于理解和維護(hù),也方便在開發(fā)過程中逐步測(cè)試每個(gè)部分的匹配效果。

到此這篇關(guān)于Java 正則表達(dá)式綜合實(shí)戰(zhàn):URL 匹配與源碼解析的文章就介紹到這了,更多相關(guān)java正則表達(dá)式URL 匹配內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何修改JSON字符串中的敏感信息

    如何修改JSON字符串中的敏感信息

    這篇文章主要介紹了如何修改JSON字符串中的敏感信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 下載遠(yuǎn)程maven倉(cāng)庫(kù)的jar?手動(dòng)放到本地倉(cāng)庫(kù)詳細(xì)操作

    下載遠(yuǎn)程maven倉(cāng)庫(kù)的jar?手動(dòng)放到本地倉(cāng)庫(kù)詳細(xì)操作

    這篇文章主要介紹了如何下載遠(yuǎn)程maven倉(cāng)庫(kù)的jar?手動(dòng)放到本地倉(cāng)庫(kù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Java中6種單例模式寫法代碼實(shí)例

    Java中6種單例模式寫法代碼實(shí)例

    這篇文章主要介紹了Java中6種單例模式寫法代碼實(shí)例,某個(gè)類任何情況下只有一個(gè)實(shí)例,并提供一個(gè)全局訪問點(diǎn)來(lái)獲取該實(shí)例,Java6種單例模式有2種懶漢式,2種餓漢式,靜態(tài)內(nèi)部類 ,枚舉類,需要的朋友可以參考下
    2024-01-01
  • MyBatis?原生二級(jí)緩存"難以修復(fù)"的原因解析及解決方案

    MyBatis?原生二級(jí)緩存"難以修復(fù)"的原因解析及解決方案

    文章主要討論了MyBatis原生二級(jí)緩存存在的問題,包括結(jié)構(gòu)性缺陷、難以修復(fù)等,社區(qū)提供了多種增強(qiáng)插件方案,但這些方案也有各自的優(yōu)缺點(diǎn),本文結(jié)合實(shí)例代碼介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • 深入理解java1.8之supplier

    深入理解java1.8之supplier

    這篇文章主要介紹了深入理解java1.8之supplier,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 用Spring將Service注入到Servlet中的流程步驟

    用Spring將Service注入到Servlet中的流程步驟

    在Java Web開發(fā)中,??Servlet??是一個(gè)非常重要的組件,它用于處理客戶端的請(qǐng)求并生成響應(yīng),而?Spring??框架則是一個(gè)廣泛使用的依賴注入框架,可以幫助開發(fā)者管理應(yīng)用中的對(duì)象及其依賴關(guān)系,本文將介紹如何使用Spring框架將Service層的對(duì)象注入到Servlet中
    2025-01-01
  • Java實(shí)現(xiàn)將容器 Map中的內(nèi)容保存到數(shù)組

    Java實(shí)現(xiàn)將容器 Map中的內(nèi)容保存到數(shù)組

    這篇文章主要介紹了Java實(shí)現(xiàn)將容器 Map中的內(nèi)容保存到數(shù)組,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-09-09
  • 淺談關(guān)于spring profile的誤解

    淺談關(guān)于spring profile的誤解

    這篇文章主要介紹了淺談關(guān)于spring profile的誤解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-08-08
  • SpringBoot+Vue跨域配置(CORS)問題得解決過程

    SpringBoot+Vue跨域配置(CORS)問題得解決過程

    在使用 Spring Boot 和 Vue 開發(fā)前后端分離的項(xiàng)目時(shí),跨域資源共享(CORS)問題是一個(gè)常見的挑戰(zhàn),接下來(lái),我將分享我是如何一步步解決這個(gè)問題的,包括中間的一些試錯(cuò)過程,希望能夠幫助到正在經(jīng)歷類似問題的你
    2024-08-08
  • Java中的Semaphore信號(hào)量詳解

    Java中的Semaphore信號(hào)量詳解

    這篇文章主要介紹了Java中的Semaphore信號(hào)量詳解,Semaphore(信號(hào)量)是用來(lái)控制同時(shí)訪問特定資源的線程數(shù)量,通過協(xié)調(diào)各個(gè)線程以保證合理地使用公共資源,需要的朋友可以參考下
    2023-12-12

最新評(píng)論

乐山市| 宿松县| 武宁县| 镇原县| 南郑县| 格尔木市| 平江县| 光泽县| 鞍山市| 扎赉特旗| 新安县| 富阳市| 琼中| 灌云县| 凤山市| 长乐市| 潼关县| 徐州市| 汉中市| 新竹市| 吉林市| 抚松县| 河南省| 田阳县| 武威市| 积石山| 柞水县| 巴塘县| 潞西市| 安仁县| 嘉黎县| 孝感市| 鹿泉市| 南木林县| 惠水县| 鄂尔多斯市| 泽州县| 澜沧| 德昌县| 漠河县| 大同县|