中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Java---正則表達式-創(chuàng)新互聯

目錄

成都創(chuàng)新互聯長期為1000+客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態(tài)環(huán)境。為臨潁企業(yè)提供專業(yè)的成都網站建設、網站制作臨潁網站改版等技術服務。擁有10余年豐富建站經驗和眾多成功案例,為您定制開發(fā)。

一、正則表達式的介紹

二、正則表達式的基本語法

(1)字符類

(2)預定義符

(3)數量詞

三、正則表達式的具體實例

(1)判斷電話號碼是否符合規(guī)則

(2)簡單爬蟲

(3)爬取電話和郵箱

(4)條件爬取

(5)貪婪和非貪婪爬取

(6)正則表達式在字符串表達式中的使用


一、正則表達式的介紹

正則表達式是對字符串操作的邏輯表達式,說的是不是有點抽象呢,那說說它的作用其實更加好懂。正則表達式可以校驗字符串是否符合規(guī)則(規(guī)則由你定),這樣的話你就可以在一段文本內容中查找你想要的內容了

二、正則表達式的基本語法

上面說過了正則表達式其實就是對于一個字符串根據你制定的規(guī)則做出的一個邏輯判斷,所以我們會使用其中的一個API,也就是matches函數,參數是你制定的規(guī)則,返回值是boolean型。即字符串.matches(規(guī)則)

(1)字符類
[abc]              只能是abc其中一個字符
[^abc]             abc這三個字符不可以被選擇,其他字符可以
[a-zA-Z]           只能在a-z和A-Z這兩個區(qū)間中選擇,兩個區(qū)間以外的字符不可被選
[a-z[A-Z]]         和第三種的意思是一樣的,只能在兩個區(qū)間中被選擇
[a-z&&[def]]       a-z和def的交集,也就是說只能取def這三個字符其中之一
[a-z&&[^def]]      a-z中并且出了def的字符
[a-z&&[^m-p]]      a-z中除了m-p的字符,也就是[a-lq-z]
(2)預定義符
.      任意字符
\d     一個數字[0-9]
\D     非數字[^0-9]
\s     一個空白字符[\t\n\f\r]
\S     非空白字符
\w     [a-zA-Z_0-9]英文數字下劃線
\W     除了英文數字下劃線
(3)數量詞
x?      x出現了一次或者是0次
x+      x出現了一次或者多次
x*      x出現了0次或者是多次
x{n}    x出現了正好是n次
x{n,}   x出現了至少n次
x{n,m}  x出現了至少是n次但是不超過m次

這里我提醒大家一下,千萬要看清楚你寫的規(guī)則是匹配一個字符還是多個字符??

三、正則表達式的具體實例 (1)判斷電話號碼是否符合規(guī)則

需求:十一個數字,第一個數字只能是1,最后一個數字不能是0。

public class Test {
    public static void main(String[] args){
           Scanner sca=new Scanner(System.in);
           System.out.print("請輸入你的電話號碼:");
           String s=sca.next();//電話號碼
           String rule="1[0-9]{9}[1-9]";//定義的規(guī)則
           System.out.print(s.matches(rule));
    }
}
(2)簡單爬蟲

需求:一段文本中查找Java或者是Java出現的版本號

public class Test {
    public static void main(String[] args){
          String s="市東南部ujbis1Java12史努比偶數" +
                  "圣誕節(jié)你為奶茶店搜防靜電Java1山東噢in計算Jav為oio看上你" +
                  "Java19是可能空島生存·Java30搜堅定Java=數據庫你打算";
          String regex="Java\\d{0,2}";
          Pattern p= Pattern.compile(regex);
          Matcher m=p.matcher(s);
          while(m.find()){
              System.out.println(m.group());
          }
    }
}
(3)爬取電話和郵箱

需求:在一段文本中,爬取電話號碼和郵箱

public class Test {
    public static void main(String[] args){
         String s="81是的配送費打開你發(fā)182654678541所點擊時間內" +
                 "ujhgtr@163.com搜的金絲楠18871110981是啊都是你的手機卡圣誕節(jié)迫使@163.com" +
                 "搜堅定yuhsyw@163.coomi1搜電腦172890987665搜絕對是gygwas163.com庶竭駑鈍" +
                 "18235454567是第幾行你UIUIu@163.com我似乎單詞表18765432140";
         String re1="1\\d{9}[1-9]";//電話號碼
         String re2="[a-zA-Z]{6}@163.com";
         String re=re1+"|"+re2;//兩個規(guī)則滿足其中之一即可,用豎線
         Pattern p=Pattern.compile(re);
         Matcher m=p.matcher(s);
         while(m.find()){
                System.out.println(m.group());
          }
    }
}

(4)條件爬取
((?i)java)  忽略Java的大小寫

(java)(?=7|8)   這里的問號其實可以理解成占位符,總體表達的意思是查找java7或者java8并且輸出時
                不顯示java后面的的版本號

(java)(?:7|8)  與上面相反,它是顯示后面的版本號的

(java)(?!7|8)   查找除了java7和java8

需求:在一段文本中查找Java和Java17,Java8,Java7(忽略大小寫)

public class Test {
    public static void main(String[] args){
        String s="是的蘇北jaVa18是可能都跑了實力派我JaVA89osadisd我的是極品搜" +
                "JAVA17isadhoJAVA11安排激動java10時都是你我說的菜農Java12是哦滑動SOL" +
                "是冬季是破煩巴薩jAvA8開始就等你";
        String re1="((?i)java)(?=8|7|17)";//查找只輸出前面的java部分
        String re2="((?i)java)(?:7|8|17)";//查找同時也輸出后面的部分,也可以寫成((?i)java)(7|18|17)
        String re3="((?i)java)(?!7|8|17)";//查找除了版本號是8,7,,17
        System.out.println("規(guī)則1");
        Pattern p1=Pattern.compile(re1);
        Matcher m1=p1.matcher(s);
        while(m1.find()){
            System.out.println(m1.group());
        }
        System.out.println("規(guī)則2");
        Pattern p2=Pattern.compile(re2);
        Matcher m2=p2.matcher(s);
        while(m2.find()){
            System.out.println(m2.group());
        }
        System.out.println("規(guī)則3");
        Pattern p3=Pattern.compile(re3);
        Matcher m3=p3.matcher(s);
        while(m3.find()){
            System.out.println(m3.group());
        }

    }
}

(5)貪婪和非貪婪爬取
貪婪爬?。涸谂廊祿臅r候盡可能的多獲取數據
非貪婪爬?。涸谂廊祿臅r候盡可能少獲取數 據
只寫+,*表示貪婪爬?。↗ava中默認是貪婪爬取)
+?,+*表示非貪婪爬取

public class Test {
    public static void main(String[] args){
        String s="搜絕對是你uiuisudjh怕端口abbbbb啥動靜那等";
        String rex1="ab+";
        String rex2="ab?+";
        Pattern p1=Pattern.compile(rex1);
        Pattern p2=Pattern.compile(rex2);
        Matcher m1=p1.matcher(s);
        Matcher m2=p2.matcher(s);
        System.out.println("貪婪爬取");
        while(m1.find()){
            System.out.println(m1.group());
        }
        System.out.println("非貪婪爬取");
        while(m2.find()){
            System.out.println(m2.group());
        }
    }
}

(6)正則表達式在字符串表達式中的使用
這里主要介紹兩個方法:replaceAll和split
replaceAll(規(guī)則,代替的字符串)    將字符串中符合規(guī)則的字符串替換成代替的字符串,返回值是修改后的 
                                 字符串,原來的字符串時不會發(fā)生變化的
split(規(guī)則)                      根據規(guī)則切割,返回值是字符串數組
public class Test {
    public static void main(String[] args){
        String s="李三sodjsodjso張三豐0osodndn王天霸";

        String ss=s.replaceAll("[a-zA-Z0-9]+","vs");
        System.out.println(ss);
        String[] sc=s.split("[0-9a-zA-Z]+");
        System.out.println("字符串數組:");
        for(int i=0;i

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

網站名稱:Java---正則表達式-創(chuàng)新互聯
轉載來源:http://www.rwnh.cn/article42/dcddhc.html

成都網站建設公司_創(chuàng)新互聯,為您提供虛擬主機、營銷型網站建設、手機網站建設域名注冊、關鍵詞優(yōu)化、App設計

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

汾阳市| 江安县| 南召县| 仙游县| 海丰县| 东兴市| 万荣县| 庆城县| 古蔺县| 潞西市| 南投市| 巢湖市| 兴仁县| 广灵县| 壤塘县| 郑州市| 高密市| 镇赉县| 和林格尔县| 区。| 全南县| 开江县| 彩票| 宜川县| 千阳县| 东平县| 会东县| 苏尼特左旗| 济源市| 象山县| 新干县| 仁化县| 荔浦县| 延庆县| 河间市| 浠水县| 华蓥市| 泾川县| 乐亭县| 建瓯市| 任丘市|