正則表達式_5_獲取字符串中的手機號


需求:手機號的字符串中獲得手機號如"我的手機號是18988888888,曾經用過15633333333,還用過1897777777";

package Regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
 * 需求:
 * 從包含手機號的字符串中獲得手機號如"我的手機號是18988888888,曾經用過15633333333,還用過1897777777";
 * 
 */
public class GetPhoneNum {

    public static void main(String[] args) {
            demo1();
            demo2();
    }

    public static void demo2() {
        String s="我的手機號是18988888888,曾經用過15633333333,還用過18977777777";
        String regex ="1[85]\\d{9}";
        Pattern p =Pattern.compile(regex);//發現matches()方法不行,則在Matcher中找其他方法,發現了find()方法,去找符合會澤的字符串,找到返回true,好不到返回false
        Matcher m=p.matcher(s);
//            boolean b = m.find();
//            System.out.println(b);//返回維true說明找到了,再次去Matcher中找方法,group()方法,返回以前操作所匹配的輸入字符串,也就是說返回匹配的內容
//            String s1 =m.group();
//            System.out.println(s1);//發現只會輸出一個手機號,因此要循環
        System.out.println("采用find()和group()方法獲得手機號");
        while(m.find())
            System.out.println(m.group());
    }

    public static void demo1() {
        String s="我的手機號是18988888888,曾經用過15633333333,還用過1897777777";
        String regex ="1[85]\\d{9}";
        Pattern p =Pattern.compile(regex);//獲取正則表達式
        Matcher m=p.matcher(s);//獲取匹配器
        boolean b=m.matches();//看匹配器是否與正則表達式比配 
        System.out.println("用s匹配regex的結果:");
        System.out.println(b);
        //以上三步其實相當於 System.out.println("s".matches(regex));
        System.out.println("s".matches(regex));
    }
    
    //結果為false 正則為中文匹配不上。

}

 

在分組中用$n來獲得第n組的內容,這樣就不會把所有內容都刪除掉,任何事情都不是一步而成的,因此需要分析步驟。一步一步來,這樣問題就會迎刃而解了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM