欧美网址在线观看-亚洲最新毛片-国产成人免费爽爽爽视频-亚洲一区在线影院-日韩欧美在线观看视频网站-男女激情四射-成人一区二区免费看-欧美亚洲综合在线-日韩一级视频在线播放-国产成人三级视频在线播放-亚洲中文字幕日产无码2020-99久久久国产精品免费无卡顿-av在线观看地址-果冻传媒mv免费播放在线观看-欧美在线观看视频免费-日韩天天操

聯系我們 - 廣告服務 - 聯系電話:
您的當前位置: > 關注 > > 正文

天天熱資訊!java中的正則表達式 java.util.regexJava中正則表達式的構造

來源:CSDN 時間:2023-03-14 08:47:24

介紹

前段時間使用Java的正則表達式做一些字符串匹配的任務,現將學到的正則表達式的知識整理成文。

Java中Spring.class涉及到正則表達式。如Spring.split(), matches(),replaceAll()等方法。


(資料圖片)

Java中更一般使用正則表達式的方式是利用Pattern.class和Matcher.class,所在package為java.util.regex

Java中正則表達式相關API使用不難掌握,不過重點在于編寫合適的正則表達式,尤其是利用字符類和量詞的使用。

正則表達式

Java中正則表達式與之前使用的Python是有區別的,區別在于Java對于反斜線(\)處理的不同。 在Python中"\d"表示 匹配一位數字(0-9),而Java中匹配一位數字(0-9),需要的正則表達式為"\\d"。 不過換行符和制表符只需要單反斜線“\n\t”。

字符

給出構造正則表達式的常用字符

字符描述

B指定字符B

\xhh十六進制值為oxhh的字符

\uhhhh十六進制值為oxhhhh的Unicode字符

\ttab

\n換行

\r回車

\e轉義

字符類

字符類在編寫正則表達式起到重要的作用,我們給出一些常用的構造正則表達式的字符類。

字符類描述

. (小數點)任意字符

[abc][ ] 中括號,包含a,b,c中任意字符

[^abc][ ]中括號加^, 表示否定,除a,b,c之外的

[a-z]從a到z的任意字符

[a-z&&[hi]]&&表示交集,即包含h或i

\s空白字符,包含空格,換行,回車,tab,換頁

\S大寫為小寫的取反,非空白字符,等價于[^\s]

\d數字0-9

\D非數字,等價于[^0-9]

\w詞字符,數字,大小寫字母,等價于[0-9a-zA-Z]

\W非詞,等價于[^\w]

邏輯操作符

組合一個或多個表達式,通過邏輯操作符實現。

邏輯操作符描述

XYY跟在X后面,并且XY同時滿足

X|YX或者Y

(X)() 小括號表示捕獲組(group),可以對group進行處理,尤其是獲取其中的內容

邊界匹配符

針對邊界的匹配,給出邊界匹配符。

邊界匹配符描述

^一行的開始

$一行的結束

\b詞的邊界

量詞

量詞描述了一個模式匹配文本的方式,包含

貪婪型:量詞默認是貪婪的,發現盡可能多的匹配勉強型:通過問號(?)指定,匹配最小的字符數,也稱為懶惰型,最少匹配,非貪婪。占有型:通過加號(+)指定,當用于字符串時防止匹配失敗時回溯。

貪婪型勉強型占有型描述

X?X??X?+匹配0個或1個X

X*X*?X*+匹配0個或多個X

X+X+?X++匹配1個或多個X

X{n}X{n}?X{n}+恰好匹配n個X

X{n,}X{n,}?X{n,}+至少匹配n個X

X{n,m}X{n,m}?X{n,m}+至少匹配n個X,最多匹配m個X

正則表達式使用

String

String.class提供了一些方法,如用于切分的split()方法,用于驗證是否匹配的matches()方法,用于替換操作的replaceAll方法。簡單示例如下:

/**     * String中正則表達式的測試     *     * @throws Exception 異常情況     */    @Test    public void testStringRegex() throws Exception {        // split        // 結果:[some, examples, of, regex, test]        String query = "some examples of regex test";        String[] parts = query.split(" ");        System.out.println(Arrays.toString(parts));        // matches 整個字符串是否匹配        // 結果:false        String regex = "regex";        boolean isMatched = query.matches(regex);        System.out.println(isMatched);        // replaceAll        // 結果:someexamplesofregextest        String replaceQuery = "";        String newQuery = query.replaceAll(" ", replaceQuery);        System.out.println(newQuery);    }

Pattern和Matcher

正則表達式更一般的用法是使用*java.util.regex.*下的Matcher和Pattern類。

通過Pattern類的靜態方法static Pattern.compile()編譯正則表達式,利用Pattern的*matcher()*方法生產Matcher對象。根據Matcher對象提供的API完成相應的操作。

我們以獲取字符串中的電話號碼和Html中的標題為例,實現正則表達式的匹配。示例如下:

package com.notepad.thinkingnote.regexes;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * Description: 正則表達式 *  * Create:      2018/8/25 21:37 * * @author Marvin Yang */public class RegexUtils {    /**     *  獲取content中全部的手機號碼     *     * @param content 待匹配內容     * @return 電話號碼集合     */    public ListgetPhoneNumber(String content) {        ListphoneNumbers = new ArrayList<>();        Matcher matcher = PHONE_PATTERN.matcher(content);        while (matcher.find()) {            // group=2對應(1\\d{10}), 匹配的值即為手機號碼            phoneNumbers.add(matcher.group(2));        }        return phoneNumbers;    }    /**     * 從Html中獲取title     *     * @param content a html     * @return the title of a html     */    public String getHtmlTitle(String content) {        Matcher matcher = TITLE_PATTERN.matcher(content);        return matcher.find()? matcher.group(1):null;    }    /** 手機號碼 */    private static final String PHONE_REGEX = "(^|\\D)(1\\d{10})($|\\D)";    private static final Pattern PHONE_PATTERN;    /** html 標題 */    private static final String HTML_TITLE_REGEX = "";    private static final Pattern TITLE_PATTERN;    static {        PHONE_PATTERN = Pattern.compile(PHONE_REGEX);                // 不區分大小寫        TITLE_PATTERN = Pattern.compile(HTML_TITLE_REGEX, Pattern.CASE_INSENSITIVE);    }}

構造單測樣例如下:

package com.notepad.thinkingnote.regexes;import org.junit.Test;import java.util.Arrays;import java.util.List;import static org.junit.Assert.*;/** * Description: 正則表達式單測 *  * Create:      2018/8/25 21:45 * * @author Marvin Yang */public class RegexUtilsTest {    private RegexUtils regexUtils = new RegexUtils();    @Test    public void getPhoneNumber() {        // test 1: 有電話號碼        String content = "緊急情況請撥打13845697569";        ListphoneNumbers = regexUtils.getPhoneNumber(content);        System.out.println(String.format("[%s] has phone number : [%s]", content, phoneNumbers));        // test 2: 數字12位        content = "緊急情況請撥打138456975690";        phoneNumbers = regexUtils.getPhoneNumber(content);        System.out.println(String.format("[%s] has phone number : [%s]", content, phoneNumbers));        // test 3: 開頭不是1        content = "緊急情況請撥打23845697569";        phoneNumbers = regexUtils.getPhoneNumber(content);        System.out.println(String.format("[%s] has phone number : [%s]", content, phoneNumbers));        // test 4: 數字在開頭        content = "13845697569緊急情況請撥打";        phoneNumbers = regexUtils.getPhoneNumber(content);        System.out.println(String.format("[%s] has phone number : [%s]", content, phoneNumbers));    }    @Test    public void getHtmlTitle() throws Exception {        // test 1: 正常情況        String content = "";        String title = regexUtils.getHtmlTitle(content);        System.out.println(String.format("get title [%s] from content: [%s]", title, content));        // test 1: 不區分大小寫        content = "";        title = regexUtils.getHtmlTitle(content);        System.out.println(String.format("get title [%s] from content: [%s]", title, content));    }}

總結

本文對Java的正則表達式的使用進行了簡單的介紹,已經利用Pattern和Matcher進行匹配的樣例。當然重要的還是正則表達式的編寫,不一定非得很復雜, 重點是適合我們處理的問題。

參考文獻

責任編輯:

標簽: 正則表達式

相關推薦:

精彩放送:

新聞聚焦
Top 欧美网址在线观看-亚洲最新毛片-国产成人免费爽爽爽视频-亚洲一区在线影院-日韩欧美在线观看视频网站-男女激情四射-成人一区二区免费看-欧美亚洲综合在线-日韩一级视频在线播放-国产成人三级视频在线播放-亚洲中文字幕日产无码2020-99久久久国产精品免费无卡顿-av在线观看地址-果冻传媒mv免费播放在线观看-欧美在线观看视频免费-日韩天天操

        99re6这里有精品热视频| 18黄暴禁片在线观看| 日本a在线天堂| 国产成人无码av在线播放dvd| 91免费视频黄| 黄色国产小视频| 99999精品视频| 噜噜噜久久亚洲精品国产品麻豆| 国产成人av影视| 霍思燕三级露全乳照| 妞干网视频在线观看| 成人av在线不卡| 欧美视频在线观看视频| 啊啊啊一区二区| 成人午夜视频在线观看免费| 熟女人妇 成熟妇女系列视频| www.偷拍.com| 日韩精品在线中文字幕| 9191国产视频| 国自产拍偷拍精品啪啪一区二区| 免费网站在线观看视频| 国产69精品久久久久久久| 国产二区视频在线播放| 五月天婷婷亚洲| 国产精品久久成人免费观看| 国产在线视频综合| 日韩人妻精品无码一区二区三区| 国产对白在线播放| 欧美精品自拍视频| 成人免费在线观看视频网站| 日av中文字幕| 成人免费看片视频在线观看| 黄色www网站| www激情五月| 国内精品在线观看视频| 天天干天天色天天干| 国产精品www在线观看| 九九热在线免费| 国产尤物av一区二区三区 | 牛夜精品久久久久久久| 亚洲一区二区中文字幕在线观看| 免费看欧美黑人毛片| 亚欧在线免费观看| 国产手机免费视频| 天堂在线一区二区三区| 国产精品久久中文字幕| 日韩精品在线播放视频| 亚洲国产精品久久久久爰色欲| 男女无套免费视频网站动漫| 热99这里只有精品| 久热免费在线观看| 五十路熟女丰满大屁股 | 亚洲少妇第一页| 亚洲高潮无码久久| 性猛交ⅹ×××乱大交| 怡红院av亚洲一区二区三区h| 在线视频日韩欧美| 五月天亚洲视频| 亚洲精品乱码久久久久久自慰| 久久国产精品网| 熟妇熟女乱妇乱女网站| 欧美一级片中文字幕| 男的插女的下面视频| 日韩福利视频在线| 亚洲欧美国产日韩综合| 国产在线观看福利| 91专区在线观看| 韩日视频在线观看| 免费在线看黄色片| 无码 制服 丝袜 国产 另类| 免费观看黄色的网站| 青娱乐精品在线| 激情视频小说图片| 国产性生活免费视频| 91黄色在线看| 欧美色图色综合| 99视频在线免费| 亚洲一级免费在线观看| 午夜福利123| 亚洲第一综合网站| 夜夜添无码一区二区三区| 日韩av综合在线观看| www.亚洲天堂网| 亚洲第一狼人区| 免费看污污视频| 免费在线观看亚洲视频 | 香蕉视频色在线观看| 韩国黄色一级大片| 亚洲黄色网址在线观看| 九一免费在线观看| www.好吊操| 污污视频网站免费观看| 欧美aaa在线观看| 成年人视频观看| 亚洲欧美自偷自拍另类| 丰满人妻一区二区三区53号| 日韩a∨精品日韩在线观看| 超碰在线97免费| 免费的一级黄色片| 亚洲人视频在线| 国产一二三四五| 欧美日韩在线免费播放| 免费看黄色a级片| 亚洲美女性囗交| 国产主播在线看| 强开小嫩苞一区二区三区网站| 久久www视频| 中文字幕亚洲欧洲| 日韩欧美亚洲天堂| 色哟哟免费网站| 天堂在线资源视频| 男人用嘴添女人下身免费视频| 日本黄大片一区二区三区| av动漫在线播放| 男人添女人下面免费视频| 男女私大尺度视频| 欧美日韩久久婷婷| 日本免费观看网站| 欧美一级免费播放| 九一免费在线观看| 色偷偷中文字幕| 超碰成人在线播放| 中文字幕精品一区二区三区在线| 先锋影音男人资源| wwwwwxxxx日本| 欧美性猛交久久久乱大交小说 | 久久av综合网| 中文字幕色呦呦| 日韩欧美国产片| av无码精品一区二区三区| www.xxx麻豆| 日本福利视频在线观看| 国产一级片91| 91国在线高清视频| 日韩网站在线免费观看| 日b视频免费观看| www.av蜜桃| 少妇无码av无码专区在线观看 | 欧洲黄色一级视频| 免费毛片网站在线观看| 男人操女人免费软件| 国产精品网站免费| 国产深夜男女无套内射| 国产xxxx振车| 国产免费黄色av| 日本女优爱爱视频| 欧美视频免费看欧美视频| 91视频 -- 69xx| 国产a级一级片| 亚洲一区二区三区四区五区xx| 国产乱人伦精品一区二区三区| 亚洲欧美自拍另类日韩| 国产欧美激情视频| 一二三在线视频| 日韩视频在线视频| 欧美变态另类刺激| 99视频免费播放| 三级性生活视频| 国产婷婷一区二区三区| 日韩大片一区二区| 欧美美女黄色网| 亚洲少妇第一页| 国产v片免费观看| 无限资源日本好片| 热久久最新网址| 宅男噜噜噜66国产免费观看| 一级黄色录像在线观看| 少妇久久久久久被弄到高潮| 尤物av无码色av无码| 日韩a一级欧美一级| 伊人再见免费在线观看高清版| 女性女同性aⅴ免费观女性恋| 欧美视频国产视频| 日韩黄色短视频| 三级黄色片免费看| 欧美三级午夜理伦三级| 手机在线国产视频| 国产不卡一区二区视频| 欧美日韩在线免费观看视频| 免费在线a视频| 日韩 欧美 视频| 香蕉精品视频在线| 免费av不卡在线| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 国产在线播放观看| 毛葺葺老太做受视频| 国产av国片精品| 手机在线视频你懂的| 欧美黑人又粗又大又爽免费| 成人精品视频在线播放| 欧美性视频在线播放| 中日韩av在线播放| 免费看污污网站| 国产成人a亚洲精v品无码| 欧洲精品在线播放| 天天干天天综合| 黄色在线视频网| 精品综合久久久久| 日本福利视频在线| 日本老太婆做爰视频|