1. 程式人生 > >正則表達式 3 -- 查找

正則表達式 3 -- 查找

log col pat () 執行順序 並且 其他 a-z bsp

用正則表達式執行查找命令,則需要用正則對象,其規則和執行順序如下:

指定為字符串的正則表達式必須首先被便以為此類的實例。然後,可將得到的正則對象匹配任意的字符串用於創建Mather對象,執行匹配所涉及的所有狀態都駐留在匹配其中,所以多個匹配器可以共享同一個模式。

查找需要使用的對象:
Pattern 正則對象
Matcher 匹配器對象

因此,典型的調用順序為:

Pattern p = Pattern.compile("正則");
Matcher m = p.matcher("aaaaaab");
boolean b = m.matchers();

匹配器要使用到的方法:
find() 通知匹配器去匹配字符串,查找符合規則的字符串。如果能查找到符合規則的字符串,返回true
group() 獲取符合規則的子串

下面用代碼實現對一段字符串中郵箱的查找,假設郵箱規則:@前:位數為3-18位,首位是不能為0或者下劃線的字符,其他位任意字符 @後:2位以上的非下劃線字符+(.com .cn .net .com.cn)

 1 public class Demo2 {
 2     public static void main(String[] args) {
 3         //找出郵箱
 4         String str = "聯系郵箱:[email protected];[email protected];"
 5          + "[email protected]
/* */;[email protected];[email protected]"; 6 7 String reg = "[a-zA-Z1-9]\\w{2,17}@[a-zA-Z0-9]{2,}(\\.(com|cn|net)){1,2}"; 8 //指定為字符串的正則表達式必須首先被便以為此類的實例 9 Pattern p = Pattern.compile(reg); 10 //使用正則對象匹配字符串用於產生一個mather對象 11 Matcher m = p.matcher(str);
12 13 while (m.find()) { 14 System.out.println(m.group()); 15 } 16 } 17 }

補充:

加入對字符串“ri zhao xiang lu sheng zi yan”查找,查找其中的兩個字母組成的子串

如果直接把正則寫成reg="[a-zA-Z]{2}",那麽查詢結果就會如下:

ri

zh

xi

lu

sh

zi

ya

可以看到,不僅查到了組成字符個數為兩個的單詞,還查到了多個的並且剪切到了前兩位。此時就要加入邊界匹配器:

技術分享

那麽我們新的正則就應該是reg="\\b[a-zA-Z]{2}\\b" ,執行結果為:

ri

lu

zi

正則表達式 3 -- 查找