亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

在Java中使用基本的正則表達(dá)式

 更新時(shí)間:2021年07月01日 08:55:27   作者:水墨之白  
這篇文章主要介紹了在Java中使用基本的正則表達(dá)式,本文通過(guò)簡(jiǎn)要的案例,說(shuō)明了很多場(chǎng)景下的正則表達(dá)式的用法,列出了正則表達(dá)式匹配規(guī)則的表格,需要的朋友可以參考下

一、正則表達(dá)式簡(jiǎn)介

正則表達(dá)式是使用單個(gè)字符串來(lái)描述、匹配一系列匹配某個(gè)句法規(guī)則的字符串。爬蟲(chóng)中解析html可以使用正則來(lái)方便的提取信息

二、正則表達(dá)式匹配規(guī)則

模式 描述
\w 匹配字母、數(shù)字、下劃線
\W 匹配字母、數(shù)字、下劃線
\s 匹配任意空白字符,相當(dāng)于[\t\n\r\f]
\S 匹配任意非空字符
\d 匹配任意數(shù)字,相當(dāng)于[0-9]
\D 匹配非數(shù)字的字符
\A 匹配字符串開(kāi)頭
\Z 匹配字符串結(jié)尾,如果存在換行,只匹配到換行前的結(jié)束字符串
\z 匹配字符串結(jié)尾,如果存在換行,同時(shí)還會(huì)匹配換行符
\G 匹配最后匹配完成的位置
\n 匹配一個(gè)換行符
\t 匹配一個(gè)制表符
^ 匹配一行字符串的開(kāi)頭
$ 匹配一行字符串的結(jié)尾
. 匹配任意字符,除了換行符
[^…] 不在[]中的字符,比如[^abc]匹配除了a、b、c之外的字符
* 匹配0個(gè)或多個(gè)表達(dá)式
+ 匹配1個(gè)或多個(gè)表達(dá)式
? 匹配0個(gè)或1個(gè)前面的正則表達(dá)式定義的片段,非貪婪方式
() 匹配括號(hào)內(nèi)的表達(dá)式,也表示一個(gè)組
{n} 精確匹配n個(gè)前面的表達(dá)式,比如\d{n},代表n個(gè)數(shù)字
{n,m} 匹配n到m次由前面正則表達(dá)式定義的片段,貪婪方式

代碼實(shí)戰(zhàn):

public class RegexAction {
    public static void main(String[] args) {
        String s = "Hello 123 4567 World_This is a Regex Demo";
        //match_1(s);
        //match_2(s);
        //match_3(s);
        //match_4(s);
        //match_5(s);
        match_6(s);
    }

    private static void match_1(String s) {
        Pattern pattern = Pattern.compile("^Hello\\s\\d\\d\\d\\s\\d{4}\\s\\w{10}");
        Matcher matcher = pattern.matcher(s);

        if(matcher.find()) {
            System.out.println(matcher.group(0));
        }
    }

    private static void match_2(String s) {
        Pattern pattern = Pattern.compile("Hello\\s(\\d+)\\s\\d{4}\\s\\w{10}");
        Matcher matcher = pattern.matcher(s);

        if(matcher.find()) {
            System.out.println(matcher.group(0));  //匹配到的整個(gè)結(jié)果
            System.out.println(matcher.group(1));  //匹配到的第一個(gè)括號(hào)中的結(jié)果
        }
    }

    private static void match_3(String s) {
        Pattern pattern = Pattern.compile("Hello\\s(\\d*)\\s\\d{4}\\s\\w{10}");
        Matcher matcher = pattern.matcher(s);

        if(matcher.find()) {
            System.out.println(matcher.group(0));  //匹配到的整個(gè)結(jié)果
            System.out.println(matcher.group(1));  //匹配到的第一個(gè)括號(hào)中的結(jié)果
        }
    }

    private static void match_4(String s) {
        Pattern pattern = Pattern.compile("Hello.*Demo");
        Matcher matcher = pattern.matcher(s);

        if(matcher.find()) {
            System.out.println(matcher.group(0));  //匹配到的整個(gè)結(jié)果
        }
    }

    /**
     * 貪婪匹配
     * 匹配中間數(shù)字,只能得到7
     * .*會(huì)盡可能多的匹配數(shù)據(jù)
     * @param s
     */
    private static void match_5(String s) {
        Pattern pattern = Pattern.compile("Hello.*(\\d+).*Demo");
        Matcher matcher = pattern.matcher(s);

        if(matcher.find()) {
            System.out.println(matcher.group(1));  //匹配到的整個(gè)結(jié)果

        }

    }

    /**
     * .*?非貪婪匹配
     * @param s
     */
    private static void match_6(String s) {
        Pattern pattern = Pattern.compile("Hello.*?(\\d+).*Demo");
        Matcher matcher = pattern.matcher(s);
        if(matcher.find())  {
            System.out.println(matcher.group());
            System.out.println(matcher.group(1));
        }
    }
    
	/**
     * 正則表達(dá)式字符串也可以不編譯直接使用
     * @param s
     */
    private static void match_7(String s) {
        String regex = "Hello.*?(\\d+).*Demo";
        boolean flag = s.matches(regex);
        System.out.println(flag);
    }

}
  • Pattern 類
    pattern 對(duì)象是一個(gè)正則表達(dá)式的編譯表示
  • Matcher 類
    Matcher 對(duì)象是對(duì)輸入字符串進(jìn)行解釋和匹配操作的引擎
  • find()方法
    嘗試查找與該模式匹配的輸入序列的下一個(gè)子序列,直到搜索到輸入序列結(jié)束
    可以從指定位置開(kāi)始匹配find(int start)

到此這篇關(guān)于在Java中使用基本的正則表達(dá)式的文章就介紹到這了,更多相關(guān)Java使用正則表達(dá)式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解高性能緩存Caffeine原理及實(shí)戰(zhàn)

    詳解高性能緩存Caffeine原理及實(shí)戰(zhàn)

    Caffeine是基于Java 8開(kāi)發(fā)的,提供了近乎最佳命中率的高性能本地緩存組件,Spring5開(kāi)始不再支持Guava Cache,改為使用Caffeine。Caffeine提供的內(nèi)存緩存使用參考Google guava的API
    2021-06-06
  • Java登錄功能實(shí)現(xiàn)token生成與驗(yàn)證

    Java登錄功能實(shí)現(xiàn)token生成與驗(yàn)證

    這篇文章介紹了Java登錄功能實(shí)現(xiàn)token生成與驗(yàn)證,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • SpringBoot實(shí)現(xiàn)jsonp跨域通信的方法示例

    SpringBoot實(shí)現(xiàn)jsonp跨域通信的方法示例

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)jsonp跨域通信的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 解決IDEA target文件夾越來(lái)越大的問(wèn)題

    解決IDEA target文件夾越來(lái)越大的問(wèn)題

    這篇文章主要介紹了解決IDEA target文件夾越來(lái)越大的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • SpringBoot中dubbo+zookeeper實(shí)現(xiàn)分布式開(kāi)發(fā)的應(yīng)用詳解

    SpringBoot中dubbo+zookeeper實(shí)現(xiàn)分布式開(kāi)發(fā)的應(yīng)用詳解

    這篇文章主要介紹了SpringBoot中dubbo+zookeeper實(shí)現(xiàn)分布式開(kāi)發(fā)的應(yīng)用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Springboot使用Security實(shí)現(xiàn)OAuth2授權(quán)驗(yàn)證完整過(guò)程

    Springboot使用Security實(shí)現(xiàn)OAuth2授權(quán)驗(yàn)證完整過(guò)程

    安全管理是軟件系統(tǒng)必不可少的的功能。根據(jù)經(jīng)典的“墨菲定律”——凡是可能,總會(huì)發(fā)生。如果系統(tǒng)存在安全隱患,最終必然會(huì)出現(xiàn)問(wèn)題,這篇文章主要介紹了SpringBoot使用Security實(shí)現(xiàn)OAuth2授權(quán)驗(yàn)證完整過(guò)程
    2022-12-12
  • Java中對(duì)象數(shù)組的使用方法詳解

    Java中對(duì)象數(shù)組的使用方法詳解

    這篇文章主要介紹了Java中對(duì)象數(shù)組的使用方法,結(jié)合實(shí)例形式分析了java對(duì)象數(shù)組的功能、定義、初始化與相關(guān)使用技巧,需要的朋友可以參考下
    2019-08-08
  • 基于接口實(shí)現(xiàn)java動(dòng)態(tài)代理示例

    基于接口實(shí)現(xiàn)java動(dòng)態(tài)代理示例

    這篇文章主要介紹了基于接口實(shí)現(xiàn)java動(dòng)態(tài)代理示例,需要的朋友可以參考下
    2014-04-04
  • java內(nèi)部類的定義與分類示例詳解

    java內(nèi)部類的定義與分類示例詳解

    這篇文章主要給大家介紹了關(guān)于java內(nèi)部類的定義與分類的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • springboot中使用redis的方法代碼詳解

    springboot中使用redis的方法代碼詳解

    ​redis 作為一個(gè)高性能的內(nèi)存數(shù)據(jù)庫(kù),如果不會(huì)用就太落伍了,之前在 node.js 中用過(guò) redis,本篇記錄如何將 redis 集成到 spring boot 中。感興趣的朋友跟隨小編一起看看吧
    2019-05-05

最新評(píng)論