超簡單!正規表示式總結
正規表示式小總結
對於正規表示式,大學的時候就學過不過因為沒有仔細的好好聽課,導致工作後很長一段時間還是不是很熟悉,所以特意抽出個時間來總結一下用法。
\d表示任意一個數字0-9
\s表示任意一個空白字元,或換行符
\w表示任意一個字元 0-9 a-z A-Z 或下劃線
tip:如果d,s,w為大寫那麼就是求反向 例:\D即匹配一個非數字
. :表示匹配任意一個字元,僅限一個
如果匹配中文就用\u####表示
a\u548cc可以匹配a和c \u548c 為 ‘和’
\d* 可以匹配認識個字元,包括0字元,即0到任意個
\d+ 匹配1到任意個(至少一個)
\d? 可以匹配0或一個字元 例A? 可以匹配 空和A
\d{3} 可以匹配3個連著的數字
\d{3,5}可以匹配3-5個連著的數字
\d{{3,}可以匹配3個以上數字
\d{0,3}最多匹配3個數字
[abc]表示匹配方括號內任意一個字元
[a-zA-Z0-9]匹配指定範圍內字元
[^A-F]指定範圍以外字元
A\sB|A\sC|A\sD 匹配 A B或A C或A D
上面可以提取 A\s(B|C|D)
^匹配開頭,美元符號匹配結尾
^在方括號內的話代表取反 [^0-9]表示匹配一個非數字
^A\d+B[美元符號]表示匹配A開頭的B結尾的字串,中間包含的是任意1到多個數字
想要匹配區號
0851-2593112
0851-259\d{4}
分組匹配
常規匹配方式為
String.matcher()方法,括號內放正規表示式
分組的話即需要
Pattern p = Pattern.compile("(\d{3,4})\-(\d{7,8})");
Matcher m = p.matcher(“010-12345678”);
if (m.matches()) {
String g1 = m.group(1);
String g2 = m.group(2);
System.out.println(g1);
System.out.println(g2);
}
得到兩個匹配上的子串010和12345678。
貪婪匹配
一般預設是貪婪匹配,就是一個表示式儘可能多的匹配後面的字串
“123000”:3個0
“10100”:2個0
“1001”:0個0
如(\d+)(0*)這個的話那麼後面的(0*)就沒用了,因為前面的\d+就已經把所有的字串匹配完了,所以分組的時候就只會顯示一個組。這個時候可以在\d+變為\d+?變為非貪婪,這樣遇到0的時候發現後面的0可以匹配\d+就不會再往後匹配了。
tips:(\d??)(9)前項表示匹配1個或0個數字後面表示非貪婪,如果是’9999‘的話,就可以分為兩組 ”“和”9999“
前面就預設為只匹配0個字元。
分割字串
String.split()方法傳入的正是正規表示式。
“a, b ;; c”.split("[\,\;\s]+"); // { “a”, “b”, “c” }
凡是遇到,;空格都是分割符
搜尋字串
String s = “the quick brown fox jumps over the lazy dog.”;
Pattern p = Pattern.compile("\wo\w");
Matcher m = p.matcher(s);
while (m.find()) {
String sub = s.substring(m.start(), m.end());
System.out.println(sub);
}
找出符合\w0\w的字串那麼只有
brown的row ,fox, dog
\w等於[A-Za-z0-9_]注意最後一個是下劃線
替換
String s = “The quick\t\t brown fox jumps over the lazy dog.”;
String r = s.replaceAll("\s+", " ");
System.out.println®; // “The quick brown fox jumps over the lazy dog.”
用一個空格字串替換調 \s+(這個是代表有一個或多個空格字元或者tab)
反向引用
String s = “the quick brown fox jumps over the lazy dog.”;
String r = s.replaceAll("\s([a-z]{4})\s", " $1 ");
System.out.println®;
$1代表是被匹配到的字串
the quick brown fox jumps over the lazy dog.
分割字串:String.split()
搜尋子串:Matcher.find()
替換字串:String.replaceAll()
相關文章
- 正規表示式總結
- JS正規表示式總結JS
- Java正規表示式總結Java
- 常用正規表示式總結
- 提取超連結正規表示式
- php之正規表示式函式總結PHP函式
- Java正規表示式簡單介紹Java
- 正規表示式簡述
- 正規表示式基礎知識總結
- 硬剛正規表示式的心得總結
- 正規表示式簡明教程
- 正規表示式小結篇
- 正規表示式理解及簡單應用舉例
- 密碼強度的正規表示式(JavaScript)總結密碼JavaScript
- python正規表示式(簡明版)Python
- 簡單介紹python中使用正規表示式的方法Python
- 正規表示式單行、多行模式簡介(使用說明)模式
- 正規表示式
- 正規表示式.
- 正規表示式test() 總是返回true
- 正規表示式中 “$” 並不是表示 “字串結束字串
- 簡單介紹正規表示式拆分url例項程式碼
- 100天精通Python—第34天:正規表示式大總結Python
- 匹配磁力連結的正規表示式
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- Python正規表示式簡記和re庫Python
- 常用正規表示式
- JavaScript 正規表示式JavaScript
- MySQL正規表示式MySql
- 正規表示式(java)Java
- SQL正規表示式SQL
- python正規表示式Python
- 正規表示式合集
- 正規表示式(一)
- Python 正規表示式Python
- Python——正規表示式Python
- PHP正規表示式PHP
- 正規表示式概括