欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在Java中使用基本的正則表達式

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

一、正則表達式簡介

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

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

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

代碼實戰(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));  //匹配到的整個結(jié)果
            System.out.println(matcher.group(1));  //匹配到的第一個括號中的結(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));  //匹配到的整個結(jié)果
            System.out.println(matcher.group(1));  //匹配到的第一個括號中的結(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));  //匹配到的整個結(jié)果
        }
    }

    /**
     * 貪婪匹配
     * 匹配中間數(shù)字,只能得到7
     * .*會盡可能多的匹配數(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));  //匹配到的整個結(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));
        }
    }
    
	/**
     * 正則表達式字符串也可以不編譯直接使用
     * @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 對象是一個正則表達式的編譯表示
  • Matcher 類
    Matcher 對象是對輸入字符串進行解釋和匹配操作的引擎
  • find()方法
    嘗試查找與該模式匹配的輸入序列的下一個子序列,直到搜索到輸入序列結(jié)束
    可以從指定位置開始匹配find(int start)

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

相關(guān)文章

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

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

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

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

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

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

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

    解決IDEA target文件夾越來越大的問題

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

    SpringBoot中dubbo+zookeeper實現(xiàn)分布式開發(fā)的應用詳解

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

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

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

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

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

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

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

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

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

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

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

最新評論