正規表示式複習
正規表示式
概念
正規表示式是用來描述具有一定特徵的字串的特殊字
符串。Regular Expression。
ab*: a 若干個 b ->* 零個及以上 ,匹配: a ab
abbbbb abbbbbbb 不能 bbbbb。
(cd)*: ()->組,改變了優先順序 ,若干個 cd,匹配: “” cd
cdcd cdcdcd
ab*(cd)*:a 若干個 b 和若干個 cd 匹配: a ab
abbbbb abbbbbbb acd acdcd abbbbbcd abcd
ab*|(cd)*: |或的優先順序低 匹配: a ab cd
ab|c : 匹配 ab c
作用
驗證、查詢、替換、分割
匹配規則
1. 特殊字元轉義
\d:0-9數字,使用時\要加一個\轉義 \d
\w: 26字母大小寫,0-9數字 \w
^ 開始標誌
$ 結束標誌
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-V5THaOnX-1603278853829)(C:\Users\lwf\AppData\Roaming\Typora\typora-user-images\image-20201021172825206.png)]
2.自定義
由 [] 組,只匹配一個, 需要注意以下四個:
^ : 如果在第一個位置,表示取反的含義。
-:表示一個區間即範圍
] : 最近一個位置為:結束 ,如果要表示普通的]請加 \
\ : 轉義
[ae134] -> a e 1 3 4
[(as)] ->a s ( )
[a-z] ->小寫字母
[-\]a-z\[] -> -[] 及小寫字母
3.預設|標準字元類
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-7e9vdN5f-1603278853832)(C:\Users\lwf\AppData\Roaming\Typora\typora-user-images\image-20201021173546907.png)]
h[ea]llo –>hello hallo
h(e|a)llo ->hello hallo
[\-\\abc] -> - \ a b c
\d\s ->一個數字和一個空白
[\d\s] –> 數字 或 空白
3. 量詞
匹配的過程中,需要指定次數
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-ZzmzZYUp-1603278853834)(C:\Users\lwf\AppData\Roaming\Typora\typora-user-images\image-20201021185857923.png)]
co*ke –> 不限個數的 O
co+ke –>至少一個 O
co?ke ->1 個或零個 O
co{0}ke ->0 個
co{5,}ke –>5 次及以上
co{5,8}ke –> 至少 5 次,最多 8 次
[1-9]\d{3} –>大於等於 1000 小於等於 9999 的數
[1-9]\d{2,4} –>大於等於 100 小於等於 99999 的數
1[34578]\d{9} : 匹配手機號
<[a-zA-Z]+\d?> ->網頁標籤
<[A-Za-z][A-Za-z0-9]*> ->網頁標籤
4. 貪婪模式
在匹配次數不定時如 *, {n,}, + 匹配字元越多越好,
預設模式即”貪婪模 ”
-
貪婪模式 greedy(匹配字元越多越好,可回溯)
-
? 懶惰模式 lazy reluctant (匹配字元越少越好,可回
溯)
- + 獨佔模式 possessive(匹配字元越多越好,不可回溯)
用的較少 cokecolacoooooooooooooke
.*o –>貪婪模式
.{2,}o–>貪婪模式
.{2,}?o –>懶惰模式
.{2,}+o –>獨佔模式,不可回溯 沒有匹配到內容。
<.+?> ->找出標籤 不要標籤內的內容。不是
<.+> <[^>]+>->找出標籤 不要標籤內的內容。不是<.+>
5.邊界
1)、邊界不佔用寬度,只是一個界限
2)、 ^ :開始 \b :單詞邊界 \B :非單詞邊界
$ :結束
^ :多行代表每行頭 單行代表整個字串的開始
$ : 多行代表每行尾 單行代表字串的結尾
\b : 匹配前面或後面的不是\w
\B : 匹配前面或後面的是\w
查詢開頭的 hello -> ^hello 找出 獨立的單詞 world -> \bworld\b 查詢結尾的 world -> world$
常用類
java.util.regex Pattern Matcher String
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-Tm2VQRJQ-1603278853837)(C:\Users\lwf\AppData\Roaming\Typora\typora-user-images\image-20201021190732463.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-ESmYp9td-1603278853840)(C:\Users\lwf\AppData\Roaming\Typora\typora-user-images\image-20201021190805375.png)]
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author lwf
* @title: Demo1
* @projectName 10_21Code
* @description: TODO
* @date 2020/10/2116:03
*/
public class Demo1 {
public static void main(String[] args) {
String str1="127.124.235.001";
//簡單匹配檢查ip
System.out.println(str1.matches("\\d{1,3}(.\\d{1,3}){3}"));
//0-255 ([01]\\d{2})|2([0-4]\\d)|25[0-5] (([01]\d{2})|2([0-4]\d)|25[0-5])(.(([01]\d{2})|2([0-4]\d)|25[0-5])){3}
//只能匹配 0-255.0-255.0-255.0-255 且127.0.0.1必須寫成127.000.000.001不然無法識別
System.out.println(str1.matches("(([01]\\d{2})|2([0-4]\\d)|25[0-5])(.(([01]\\d{2})|2([0-4]\\d)|25[0-5])){3}"));
//Pattern ,Matcher 匹配字串
//Pattern 呼叫compile()方法傳入正規表示式
//獲取到的Pattern物件呼叫matcher()傳入要分析的字串
//呼叫get()方法獲取是否匹配,參數列示從哪個索引開始查詢預設0
String str2="江西上饒beautiful";
Pattern p=Pattern.compile("上");
Matcher matcher=p.matcher(str2);
System.out.println(matcher.find(2));
}
}
從哪個索引開始查詢預設0
String str2=“江西上饒beautiful”;
Pattern p=Pattern.compile(“上”);
Matcher matcher=p.matcher(str2);
System.out.println(matcher.find(2));
}
}
相關文章
- Go 正規表示式學習Go
- 正規表示式學習和練習
- 判斷字元是否重複正規表示式字元
- 正規表示式例項蒐集,通過例項來學習正規表示式。
- 通過js正規表示式例項學習正規表示式基本語法JS
- 如何快速學習正規表示式
- 正規表示式入門學習
- 正規表示式學習筆記筆記
- 正規表示式
- 正規表示式.
- 匹配指定長度不重複字母正規表示式
- 正規表示式去除連續重複的字元字元
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- 正規表示式學習(2)---字元特性字元
- 學習正規表示式(js、C#)JSC#
- Python學習筆記 - 正規表示式Python筆記
- java 正規表示式語法學習Java
- 常用正規表示式
- JavaScript 正規表示式JavaScript
- MySQL正規表示式MySql
- 正規表示式(java)Java
- SQL正規表示式SQL
- python正規表示式Python
- 正規表示式合集
- 正規表示式(一)
- Python 正規表示式Python
- Python——正規表示式Python
- PHP正規表示式PHP
- 正規表示式概括
- javascript正規表示式JavaScript
- java正規表示式Java
- Shell正規表示式
- 正規表示式 教程
- 正規表示式 【四】
- 正規表示式匹配
- Python:正規表示式Python
- php –正規表示式PHP
- 【Linux】正規表示式Linux