Java正則表達式
Java正則表達式
最近剛開始學習Java,隨便記一點學習筆記
Java正則表達式可參考官網API幫助文檔中的Pattern類,
以下是常用的

注意,正則表達式中表示交集必須要&&而不是一個&,后者僅為普通符號&

Java中\(zhòng)需要用轉義\\表示

表示并集:|寫在方括號外面表示并集,如果在方括號里面則不用寫|
忽略大小寫:
如果只忽略B的大小寫
練習
手機號匹配
注意上述仍不嚴謹
座機電話號碼
020-2324242, ?02122442, ? 027-42424, ? 0712-3242434
郵箱號碼
匹配如下郵箱:
3232323@qq.com: mailto:3232323@qq.com
zhangsan@itcast.cnn: mailto:zhangsan@itcast.cnn
dleie0e9@163.com: mailto:dleie0e9@163.com
dleicee@pci. com.cn
較嚴格的身份證校驗
前六位開頭非0: [1-9]\d{5}
年只能18 19 20 開頭: (18|19|20)
年后半段任意數字出現兩次: ? ?\\d{2}
月份01 ~ 09 10 11 12: ? ?(0[1-9]|1[0-2])
日期01 ~ 09 10
19 2029 30 31:(0[1-9]|[12]\\d|3[01])后面4位,任意數字出現3次,最后一位可為X或x : ? ?\\d{3}[\\dXx]
分享:插件any-rule提供了常用情況的正則表達式模板
idea可按alt+鼠標 矩形選中
匹配段落中的文本
為了找到所有的匹配信息應采用循環(huán)的方式
帶有選擇性的數據爬取
文本:
Java自從95年問世以來,經歷了很多版本,目前企業(yè)中用的最多的是Java8和Java11,因為這兩個是長期支持版本,下一個長期支持版本是Java17,相信在未來不久Java17也會逐漸登上歷史舞臺。
需求1: 爬取版本號為8,11,17的Java文本,但是只要Java,不顯示版本號。
需求2:爬取版本號為8,11,17的Java文本。正確爬取結果為:Java8 Java11 Java17 Java17
需求3:爬取除了版本號為8,11.17的Java文本
貪婪爬取和非貪婪爬取
貪婪爬取:在爬取數據的時候盡可能多獲取數據 非貪婪爬取:盡可能少獲取
例:abbbbbbbbbbbbb 正則表達式:ab+
貪婪爬取:abbbbbbbbbbbbb 非貪婪爬取:ab
Java默認為貪婪爬取
只寫+和*表示貪婪匹配
+? 非貪婪匹配
*? 非貪婪匹配

分組括號
用()表示分組
每組是有組號的,也就是序號
規(guī)則1:從1開始連續(xù)不間斷
規(guī)則2:以左括號為基準,最左邊的是第一組,其次為第二組,以此類推
捕獲分組
//組號:表示把第X組的內容再拿出來用一次
練習:口吃替換
需求:
將字符串:我要學學編編編編程程程程程程。
替換為:我要學編程
捕獲分組:后序還要繼續(xù)使用本組的數據
正則內部使用\組號
正則外部使用$組號
非捕獲分組:分組之后不需要再使用本組數據,僅僅是把數據括起來

非捕獲分組不占用組號
以下寫法是錯誤的:
感謝Up主@LuckyPuppy514制作的Markdown轉B站專欄油猴腳本