Java—— 正則表達式 方法及捕獲分組

識別正則表達式的方法

方法名說明
public String[] matches(String regex)

判斷字符串是否滿足

正則表達式的規則

public string replaceAll(String regex,string newstr)

按照正則表達式的

規則進行替換

public string[] split(String regex)

按照正則表達式的

規則切割字符串

代碼實現:

public class Test11 {public static void main(String[] args) {//第一個方法之前已經使用,主要演示后兩個方法String str = "熊大mnduub熊二jnjdnjb光頭強";String regex = "\\w+";String s = str.replaceAll(regex, "vs");System.out.println(s);//熊大vs熊二vs光頭強String[] splitArr = str.split(regex);for (int i = 0; i < splitArr.length; i++) {System.out.println(splitArr[i]);}//熊大//熊二//光頭強}
}

捕獲分組:

一個括號代表一組,捕獲分組就是把這一組的數據捕獲出來,再用一次。
正則內部使用:\\組號
正則外部使用:$組號

組號定義規則:

從1開始,連續不間斷

以左括號為基準,最左邊的是第一組,其次為第二組,以此類推?

案例演示:

需求1:正則內部使用

判斷一個字符串的開始字符和結束字符是否一致,只考慮一個字符
舉例:a123a? b456b? 17891? &abc&
判斷一個字符串的開始部分和結束部分是否一致,可以有多個字符
舉例:abc123abc? b456b? 123789123? &!@abc&!@
需求3:判斷一個字符串的開始部分和結束部分是否一致,開始部分每個字符也需要一致
舉例:aaa123aaa? bbb456bbb? 111789111? &&abc&&?

代碼實現:

public class Test12 {public static void main(String[] args) {//判斷一個字符串的開始字符和結束字符是否一致,只考慮一個字符//舉例:a123a b456b 17891 &abc&//判斷一個字符串的開始部分和結束部分是否一致,可以有多個字符//舉例:abc123abc b456b 123789123 &!@abc&!@//需求3:判斷一個字符串的開始部分和結束部分是否一致,開始部分每個字符也需要一致//舉例:aaa123aaa bbb456bbb 111789111 &&abc&&//首字符任意,結束字符與首字符相同,首字符將捕獲出來,再用一次//首字符:(.)//中間部分:.+//結束字符:\\1String regex1 = "(.).+\\1";System.out.println("a123a".matches(regex1));//trueSystem.out.println("b456b".matches(regex1));//trueSystem.out.println("17891".matches(regex1));//trueSystem.out.println("&abc&".matches(regex1));//trueSystem.out.println("&abcz".matches(regex1));//falseSystem.out.println("-------------------");//開始部分可以有多個字符,結束部分與其一致,將開始部分捕獲出來,再用一次//開始部分:(.+)//中間部分:.+//結束部分:\\1String regex2 = "(.+).+\\1";System.out.println("abc123abc".matches(regex2));//trueSystem.out.println("b456b".matches(regex2));//trueSystem.out.println("123789123".matches(regex2));//trueSystem.out.println("&!@abc&!@".matches(regex2));//trueSystem.out.println("&!@abc&!x".matches(regex2));//falseSystem.out.println("-------------------");//開始部分可以有多個字符,每個字符也需要一致//結束部分與開始部分一致,將開始部分捕獲出來,再用一次//開始部分:((.)\\2*))  (.)為第二組,需要重復,可以捕獲出來用//中間部分:.+//結束部分:\\1String regex3 = "((.)\\2*).+\\1";System.out.println("aaa123aaa".matches(regex3));//trueSystem.out.println("bbb456bbb".matches(regex3));//trueSystem.out.println("111789111".matches(regex3));//trueSystem.out.println("&&abc&&".matches(regex3));//trueSystem.out.println("aaa123aaz".matches(regex3));//false}
}

需求2:正則外部使用

將字符串:我要學學編編編編程程程程程程
替換為:我要學編程

代碼實現:

public class Test13 {public static void main(String[] args) {//將字符串:我要學學編編編編程程程程程程//替換為:我要學編程String str = "我要學學編編編編程程程程程程";//(.) 表示把重復內容的第一個字符看做一組//\\1 表示第一字符再次出現//+ 表示至少一次//$1 表示把正則表達式中第一組的內容,再拿出來用String s = str.replaceAll("(.)\\1+", "$1");System.out.println(s);//我要學編程}
}

非捕獲分組:

分組之后不需要再用本組數據,僅僅是把數據括起來。

符號含義舉例
(?:正則)獲取所有Java(?:8|11|17)
(?=正則)獲取前面部分Java(?=8|11|17)
(?!正則)獲取不是指定內容的前面部分Java(?!8|11|17)

代碼演示:

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Test9 {public static void main(String[] args) {String str = "Java自從95年問世以來,經歷了很多版本,目前企業中用的最多的是Java8和Java11," +"因為這兩個是長期支持版本,下一個長期支持版本是Java17,相信在未來不久Java17也會逐漸登上歷史舞臺";//需求1//其中 ?是占位符代表字符串Java,=表示字符串Java后面連接的部分//但是在獲取的時候,只獲取=前半部分String regex1 = "Java(?=8|11|17)";//調用方法進行爬蟲show(regex1,str);//Java//Java//Java//Java//需求2//方式1:常規方式String regex2 = "Java(8|11|17)";show(regex2,str);//Java8//Java11//Java17//Java17//方式2:?是占位符代表字符串Java,:表示字符串Java后面連接的部分//在獲取的時候,可以全部獲取String reges3 = "Java(?:8|11|17)";show(reges3,str);//Java8//Java11//Java17//Java17//需求3//?是占位符代表字符串Java,!表示字符串Java后面連接的部分///在獲取的時候,獲取的是除了與!后面連接匹配的子串String regex4 = "Java(?!8|11|17)";show(regex4,str);//Java}//抽取一個方法進行爬蟲public static void show(String regex,String str){Pattern p = Pattern.compile(regex);Matcher m = p.matcher(str);while(m.find()){String s = m.group();System.out.println(s);}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/76988.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76988.shtml
英文地址,請注明出處:http://en.pswp.cn/web/76988.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

達夢并行收集統計信息

達夢收集統計信息速度如何&#xff1f; 答&#xff1a;1分鐘1G 大庫收集起來可能比較慢&#xff0c;想并行收集需要一些條件 3個參數先了解一下 我把max_parallel_degree改為16 相關說明可以看一下 對一個3G的表收集 收集方法 DBMS_STATS.GATHER_TABLE_STATS( TEST,T1,…

PyTorch 實戰:Transformer 模型搭建全解析

Transformer 作為一種強大的序列到序列模型&#xff0c;憑借自注意力機制在諸多領域大放異彩。它能并行處理序列&#xff0c;有效捕捉上下文關系&#xff0c;其架構包含編碼器與解碼器&#xff0c;各由多層組件構成&#xff0c;涉及自注意力、前饋神經網絡、歸一化和 Dropout 等…

網頁不同渲染方式的應對與反爬機制的處理——python爬蟲

文章目錄 寫在前面爬蟲習慣web 網頁渲染方式服務器渲染客戶端渲染 反爬機制使用session對象使用cookie讓請求頭信息更豐富使用代理和隨機延遲 寫在前面 本文是對前兩篇文章所介紹的內容的補充&#xff0c;在了解前兩篇文章——《爬蟲入門與requests庫的使用》和《BeautifulSou…

RK3588平臺用v4l工具調試USB攝像頭實踐(亮度,飽和度,對比度,色相等)

目錄 前言:v4l-utils簡介 一&#xff1a;查找當前的攝像頭設備 二&#xff1a;查看當前攝像頭支持的v4l2-ctl調試參數 三根據提示設置對應參數&#xff0c;在提示范圍內設置 四&#xff1a;常用調試命令 五:應用內執行命令方法 前言:v4l-utils簡介 v4l-utils工具是由Linu…

Spring Security基礎入門

本入門案例主要演示Spring Security在Spring Boot中的安全管理效果。為了更好地使用Spring Boot整合實現Spring Security安全管理功能&#xff0c;體現案例中Authentication&#xff08;認證&#xff09;和Authorization&#xff08;授權&#xff09;功能的實現&#xff0c;本案…

Trae+DeepSeek學習Python開發MVC框架程序筆記(二):使用4個文件實現MVC框架

修改上節文件&#xff0c;將test2.py拆分為4個文件&#xff0c;目錄結構如下&#xff1a; mvctest/ │── model.py # 數據模型 │── view.py # 視圖界面 │── controller.py # 控制器 │── main.py # 程序入口其中model.py代碼如下&#xff…

從認證到透傳:用 Nginx 為 EasySearch 構建一體化認證網關

在構建本地或云端搜索引擎系統時&#xff0c;EasySearch 憑借其輕量、高性能、易部署等優勢&#xff0c;逐漸成為眾多開發者和技術愛好者的首選。但在實際部署過程中&#xff0c;如何借助 Nginx 為 EasySearch 提供高效、穩定且安全的訪問入口&#xff0c;尤其是在身份認證方面…

CPU 虛擬化機制——受限直接執行 (LDE)

1. 引言&#xff1a;CPU虛擬化的核心問題 讓多個進程看似同時運行在一個物理CPU上。核心思想是時分共享 (time sharing) CPU。為了實現高效且可控的時分共享&#xff0c;本章介紹了一種關鍵機制&#xff0c;稱為受限直接執行 (Limited Direct Execution, LDE)。 1.1 LDE的基本…

linux 中斷子系統鏈式中斷編程

直接貼代碼了&#xff1a; 虛擬中斷控制器代碼&#xff0c;chained_virt.c #include<linux/kernel.h> #include<linux/module.h> #include<linux/clk.h> #include<linux/err.h> #include<linux/init.h> #include<linux/interrupt.h> #inc…

容器修仙傳 我的靈根是Pod 第10章 心魔大劫(RBAC與SecurityContext)

第四卷&#xff1a;飛升之劫化神篇 第10章 心魔大劫&#xff08;RBAC與SecurityContext&#xff09; 血月當空&#xff0c;林衍的混沌靈根正在異變。 每道經脈都爬滿黑色紋路&#xff0c;神識海中回蕩著蠱惑之音&#xff1a;"破開藏經閣第九層禁制…奪取《太古弒仙訣》……

基于c#,wpf,ef框架,sql server數據庫,音樂播放器

詳細視頻: 【基于c#,wpf,ef框架,sql server數據庫&#xff0c;音樂播放器。-嗶哩嗶哩】 https://b23.tv/ZqmOKJ5

精益數據分析(21/126):剖析創業增長引擎與精益畫布指標

精益數據分析&#xff08;21/126&#xff09;&#xff1a;剖析創業增長引擎與精益畫布指標 大家好&#xff01;在創業和數據分析的探索道路上&#xff0c;我一直希望能和大家攜手共進&#xff0c;共同學習。今天&#xff0c;我們繼續深入研讀《精益數據分析》&#xff0c;剖析…

Spark-streaming核心編程

1.導入依賴?&#xff1a; <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming-kafka-0-10_2.12</artifactId> <version>3.0.0</version> </dependency> 2.編寫代碼?&#xff1a; 創建Sp…

Kafka的ISR機制是什么?如何保證數據一致性?

一、Kafka ISR機制深度解析 1. ISR機制定義 ISR&#xff08;In-Sync Replicas&#xff09;是Kafka保證數據一致性的核心機制&#xff0c;由Leader副本&#xff08;復雜讀寫&#xff09;和Follower副本(負責備份)組成。當Follower副本的延遲超過replica.lag.time.max.ms&#…

Docker 基本概念與安裝指南

Docker 基本概念與安裝指南 一、Docker 核心概念 1. 容器&#xff08;Container&#xff09; 容器是 Docker 的核心運行單元&#xff0c;本質是一個輕量級的沙盒環境。它基于鏡像創建&#xff0c;包含應用程序及其運行所需的依賴&#xff08;如代碼、庫、環境變量等&#xf…

數據庫監控 | MongoDB監控全解析

PART 01 MongoDB&#xff1a;靈活、可擴展的文檔數據庫 MongoDB作為一款開源的NoSQL數據庫&#xff0c;憑借其靈活的數據模型&#xff08;基于BSON的文檔存儲&#xff09;、水平擴展能力&#xff08;分片集群&#xff09;和高可用性&#xff08;副本集架構&#xff09;&#x…

OpenFeign和Gateway

OpenFeign和Gateway 一.OpenFeign介紹二.快速上手1.引入依賴2.開啟openfeign的功能3.編寫客戶端4.修改遠程調用代碼5.測試 三.OpenFeign參數傳遞1.傳遞單個參數2.多個參數、傳遞對象和傳遞JSON字符串3.最佳方式寫代碼繼承的方式抽取的方式 四.部署OpenFeign五.統一服務入口-Gat…

spark-streaming(二)

DStream創建&#xff08;kafka數據源&#xff09; 1.在idea中的 pom.xml 中添加依賴 <dependency><groupId>org.apache.spark</groupId><artifactId>spark-streaming-kafka-0-10_2.12</artifactId><version>3.0.0</version> </…

JAVA聚焦OutOfMemoryError 異常

個人主頁 文章專欄 在正文開始前&#xff0c;我想多說幾句&#xff0c;也就是吐苦水吧…最近這段時間一直想寫點東西&#xff0c;停下來反思思考一下。 心中萬言&#xff0c;真正執筆時又不知先寫些什么。通常這個時候&#xff0c;我都會隨便寫寫&#xff0c;文風極像散文&…

如何在Spring Boot中配置自定義端口運行應用程序

Spring Boot 應用程序默認在端口 8080 上運行嵌入式 Web 服務器&#xff08;如 Tomcat、Jetty 或 Undertow&#xff09;。然而&#xff0c;在開發、測試或生產環境中&#xff0c;開發者可能需要將應用程序配置為在自定義端口上運行&#xff0c;例如避免端口沖突、適配微服務架構…