欧美网址在线观看-亚洲最新毛片-国产成人免费爽爽爽视频-亚洲一区在线影院-日韩欧美在线观看视频网站-男女激情四射-成人一区二区免费看-欧美亚洲综合在线-日韩一级视频在线播放-国产成人三级视频在线播放-亚洲中文字幕日产无码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免费播放在线观看-欧美在线观看视频免费-日韩天天操

        图片区乱熟图片区亚洲| 凹凸日日摸日日碰夜夜爽1| 日韩欧美中文在线视频| 想看黄色一级片| 在线观看岛国av| 9999在线观看| 欧美大黑帍在线播放| 欧美不卡在线播放| 九九九九免费视频| 色哟哟精品视频| 日韩精品一区二区三区电影| 欧美色图另类小说| 日韩精品手机在线观看| 9色porny| 男人添女人荫蒂免费视频| 91视频最新入口| 欧美一级视频在线| 国内外成人免费激情视频| 国产精品嫩草影院8vv8| 国产视频一区二区三区在线播放| 37pao成人国产永久免费视频| 中文字幕精品一区二区三区在线| 欧美在线a视频| 欧美又粗又长又爽做受| 日韩免费一级视频| 九九九九九九九九| 在线a免费观看| 欧美亚洲一二三区| 日本人69视频| 99热亚洲精品| 妞干网视频在线观看| 最近免费中文字幕中文高清百度| 日本高清免费观看| 一级黄色香蕉视频| 日本手机在线视频| 日韩中文在线字幕| 伊人免费视频二| 日韩国产欧美亚洲| 无码毛片aaa在线| 波多结衣在线观看| 自慰无码一区二区三区| 天天干天天玩天天操| 五月婷婷六月丁香激情| 天天夜碰日日摸日日澡性色av| 久久久久久久久影视| 一区二区xxx| 男生操女生视频在线观看| 亚洲三级视频网站| 色爽爽爽爽爽爽爽爽| 99免费视频观看| 国产成年人在线观看| av影院在线播放| 99视频免费播放| 久久这里只有精品8| 亚洲一二三不卡| 久久久久久久少妇| www黄色日本| 69sex久久精品国产麻豆| 国产女人18毛片| 国产精品嫩草影院8vv8| 久久av高潮av| 色哟哟精品视频| 日本黄色的视频| 日韩人妻一区二区三区蜜桃视频| 日本黄网站色大片免费观看| 国产成人一区二区三区别| 欧美做暖暖视频| 亚洲中文字幕无码av永久| 精品日韩久久久| 欧美午夜aaaaaa免费视频| 欧美在线a视频| 色国产在线视频| 波多野结衣xxxx| 91福利免费观看| 簧片在线免费看| www.爱色av.com| 欧美激情国产精品日韩| 三级黄色片免费看| 国内精品国产三级国产aⅴ久| 两根大肉大捧一进一出好爽视频| 国产女人18毛片| 青青视频免费在线| 欧美这里只有精品| 国产91在线亚洲| 分分操这里只有精品| 国产精品va在线观看无码| 国产 欧美 日韩 一区| www.日本三级| 欧美日韩性生活片| 天堂av在线网站| 日本不卡一区二区在线观看| 黄色手机在线视频| 99国产精品久久久久久| 精品综合久久久久| www.18av.com| 国产一区亚洲二区三区| 日韩中文字幕免费在线| 成人亚洲精品777777大片| 午夜激情影院在线观看| 女人帮男人橹视频播放| 日韩精品你懂的| 欧美又粗又长又爽做受| 在线看的黄色网址| 欧美一级视频在线播放| 日本77777| www黄色日本| 永久免费看av| 日本一二区免费| 美女福利视频在线| 国产a级黄色大片| 性欧美在线视频| www黄色在线| 日韩免费一级视频| 福利视频一区二区三区四区| www.午夜色| 17c国产在线| 日韩va在线观看| 天天干天天色天天干| 2025韩国理伦片在线观看| 日本精品一区二区三区四区| 男的插女的下面视频| 国产精品久久国产| a级免费在线观看| 无码 制服 丝袜 国产 另类| 男女激情免费视频| 亚洲理论电影在线观看| 精品国偷自产一区二区三区| 男人天堂a在线| 精品中文字幕av| 丝袜制服一区二区三区| 成年人三级黄色片| 精品国产乱码久久久久久1区二区| 天美星空大象mv在线观看视频| 亚洲欧美日本一区二区三区| 中文字幕av不卡在线| 日韩视频在线观看视频| 狠狠噜天天噜日日噜| 777精品久无码人妻蜜桃| 国产黄色一级网站| 天天做天天干天天操| 亚洲国产精品无码av| 簧片在线免费看| 欧美中文字幕在线观看视频 | 午夜精品中文字幕| 美女黄色免费看| 九色porny91| 日本手机在线视频| 吴梦梦av在线| 免费在线a视频| 青青在线视频免费观看| 凹凸日日摸日日碰夜夜爽1| 免费看av软件| 美女网站视频黄色| 婷婷无套内射影院| 国产毛片久久久久久| 国产91在线视频观看| 国产 国语对白 露脸| 在线观看免费视频高清游戏推荐| 蜜桃网站在线观看| 午夜免费福利网站| 伊人影院综合在线| 国产精品视频中文字幕| 免费裸体美女网站| 久久成人免费观看| 男女午夜激情视频| 中文字幕在线观看第三页| 日本www在线播放| av7777777| 日本黄网站免费| 国产一级不卡毛片| 制服丝袜综合网| 色噜噜狠狠一区二区三区狼国成人| 男人女人黄一级| 在线播放av中文字幕| 免费看污污视频| 日本熟妇人妻xxxx| 天天摸天天碰天天添| 91日韩视频在线观看| 久热精品在线观看视频| 国产九九九视频| 六月丁香婷婷激情| 欧美第一页浮力影院| 北条麻妃亚洲一区| 日本a在线免费观看| 欧美日韩第二页| www.久久com| 91猫先生在线| 中文字幕色网站| 日本免费不卡一区二区| 夜夜夜夜夜夜操| 免费看毛片的网址| 欧美女人性生活视频| 爱爱爱爱免费视频| 乱妇乱女熟妇熟女网站| 日韩精品第1页| 超碰人人草人人| www黄色在线| 成年网站在线免费观看| 无码日本精品xxxxxxxxx| 999久久久精品视频|