標籤:Regex java 正則匹配 常用文法 匹配用法
Regex基礎
Regex文法(1)
一般字元:字母,數字,漢子,底線以及沒有特殊定義的標點符號都是“一般字元”。運算式中的一般字元,在匹配一個字串的時候,匹配與之相同的一個字元
\n :代表分行符號
\t :代表定位字元
\\ :代表\本身
\^ ...... :代表匹配這字元本身
Regex文法(2)
能夠與多種字元匹配的運算式
注意區分大小寫,大寫是相反的意思
\d :任意一個數字,0~9中的任意一個
\w:任意一個字母或者底線或者漢字,也就是A~Z,a~z,0~9中的任意一個
\s :包括空格,定位字元,分行符號等空白符中的任意一個。
. :小數點可以匹配任意一個字元
Regex文法(3)
[ ]方括弧匹配方式,能夠匹配方括弧中任意一個字元
[[email protected]]: 匹配方括弧中的任意一個字元
[^abc]: 匹配除了abc以外的任意一個字元
[f-k]: 匹配“f”-“k”之間的任意一個字元
[^A-F0-3]: 匹配非A-F和非0-3的任意一個字元
Regex文法(4)
{n}: 運算式重複n次
{m,n}: 運算式至少重複m次,最多重複n次
{m,}: 運算式至少重複m次
?: 匹配運算式0次或者1次,相當於{0,1}
+ : 運算式至少出現1次,相當於{1,}
* : 運算式不出現或者出現任意次,相當於{0,}
匹配次數中的貪婪模式,(匹配字元愈多愈好,預設)
匹配次數中的非貪婪模式(匹配字元越少越好,修飾匹配次數的特殊符號後再加上一個“?“號)。例子:\d{2,4}?,這樣就將模式改為非貪婪
Regex文法(5)
- 字元邊界(本組標記匹配的不是字元而是位置,符合某種條件的位置)
^: 與字串開始的位置匹配(以一行來算)
$: 與字串結束的地方匹配
\b: 匹配單詞邊界 //比如boy\b 則在boy右邊不是邊界的不匹配
在java中使用Regex及常用函數
public class TestRegex {public static void main(String []args){//Pattern p = Pattern.compile("^\\d{4}"); //在java中的反斜線要用兩個前面一個轉義,因為\d中的\做反義用Pattern p = Pattern.compile("(\\d{4})([a-z]{2})");Matcher m = p.matcher("asdfsadfsafd2342314asdfsadf2342asdfsaf");System.out.println(m.matches());//匹配整個目標字串System.out.println(m.find());//尋找字串List<String> list = new ArrayList<String>();//用來儲存找到的groupwhile(m.find())//m.find()找到一個後就去找下一個了{System.out.println(m.group());//group(),group(0)的作用是一樣的System.out.println(m.group(0));System.out.println(m.group(1));System.out.println(m.group(2));//如果寫3的話會超出範圍list.add(m.group());}String []str = "aa33fdf55cc".split("\\d{2}");//按照兩個整數來切分String str2 ="asd2dsfdfds".replaceAll("\\ds", "**");//將ds替換掉,產生新的字串,因為前面是常量不可變System.out.println("asdfsdf".matches("\\w+"));//匹配字串}}