国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java 正則表達(dá)式【基本語法】

這篇具有很好參考價(jià)值的文章主要介紹了Java 正則表達(dá)式【基本語法】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

基本介紹

首先我們需要了解的是正則表達(dá)式中的各種元字符的功能,主要分為以下幾種:

  1. 限定符
  2. 選擇匹配符
  3. 分組組合和反向引用符
  4. 特殊字符
  5. 字符匹配符
  6. 定位符

需要注意的是:在 Java正則表達(dá)式中,兩個(gè)斜杠 \\ 相當(dāng)于其它語言中的一個(gè)斜杠 \ 。

字符匹配符

符號(hào) 含義 示例 解釋
[ ] 可以匹配的字符列表 [abcjs] a、b、c、j、s都可以匹配到
[^] 不可以被匹配的字符列表 [^abc] a、b、c不可以被匹配
- 連字符 a-z 可以匹配任意a到z的字母
. 匹配除 \n 之外的任何字符 a..b 以a開頭b結(jié)尾的字符串,中包括任意兩個(gè)字符
\\d 匹配單個(gè)數(shù)字字符 \\d{3}(\\d)? 匹配連續(xù)3個(gè)或4個(gè)數(shù)字的字符串
\\D 匹配非數(shù)字字符 \\D(\\d)* 以單個(gè)非數(shù)字字符開頭,后面接任意個(gè)數(shù)字的字符串
\\w 匹配單個(gè)數(shù)字、英文字符、下劃線 \\d{3}\\w{4} 以3個(gè)數(shù)字字符開頭的長(zhǎng)度為7的數(shù)字字母字符串
\\W 匹配單個(gè)非數(shù)字、非英文字符、非下劃線 \\W+\\d{2} 以至少一個(gè)非數(shù)字字母字符開頭,兩個(gè)數(shù)字字符結(jié)尾的字符串
\\s 匹配任何空白字符(空格,制表符等)
\\S 匹配任何非空白字符,和\s剛好相反

Java 正則表達(dá)式默認(rèn)是區(qū)分大小寫的,如何實(shí)現(xiàn)不區(qū)分大小寫?

(?i)abc???
abc 都不區(qū)分大小寫
a(?i)bc
bc 不區(qū)分大小寫
a((?i)b)c
只有 b不區(qū)分大小寫
Pattern.compile(regex,Pattern.CASE_INSENSITIVE) 方法參數(shù)內(nèi)設(shè)置忽略大小寫

選擇匹配符

符號(hào) 含義 示例 解釋
| 或者的意思 ab|cd 匹配ab或者cd

用于在匹配時(shí)有選擇的降低匹配標(biāo)準(zhǔn)。?

限定符

用于指定其前面的字符和組合項(xiàng)連續(xù)出現(xiàn)多少次

符號(hào) 含義 示例 說明 示例
* 重復(fù)0次或n次 (abc)* 以abc開頭的,子串只包含abc的字符串 abc,abcabc
+ 重復(fù)1次或多次 (abc)+ 至少以1個(gè)abc開頭,子串只包含abc的字符串 abc,abcabc
重復(fù)0次或1次 (abc)? 以abc開頭的字符串 abc
{n} 限定只能出現(xiàn)n次 [a-d]{3} 由連續(xù)的 a、b、c、d組成的字符串中任意長(zhǎng)度為3子串

定位符

規(guī)定要匹配的字符在字符串中出現(xiàn)的位置,比如是在字符串開始還是在結(jié)束處。

符號(hào) 含義
^ 開頭
$ 結(jié)尾
\\b 匹配目標(biāo)字符串的邊界,子串之間的空格
\B 匹配字符的非邊界

這里主要演示一下 \\b 和 \\B :

public static void main(String[] args) {
        String content = "我愛學(xué)習(xí) 學(xué)習(xí)不愛我 學(xué)習(xí)很快樂";

        String regex = "學(xué)習(xí)\\B";
        Pattern compile = Pattern.compile(regex);
        Matcher matcher = compile.matcher(content);
        while (matcher.find()){
            System.out.println(matcher.group());
        }
    }

當(dāng)我們?cè)O(shè)置匹配語句為 \\b 的時(shí)候,輸出結(jié)果:

學(xué)習(xí)

當(dāng)我們?cè)O(shè)置匹配語句為 \\B 的時(shí)候,輸出結(jié)果:

學(xué)習(xí)
學(xué)習(xí)

可以看到,\\b?匹配的是子串"學(xué)習(xí)"后是空格的,而 \\B 剛好相反。

分組

捕獲分組

我們上一篇博客寫過分組的案例,也就是 group(0),group(1)這種,也叫做非命名捕獲。

這里主要介紹一種新的分組方法,叫做命名捕獲,也就是說我們可以自定義組的名字。相比較之前的哪一種,它既可以使用非命名捕獲(通過組號(hào)獲取匹配的子串),也可以通過自定義的名字來捕獲。

語法:<?<name><pattern>>?

其中,需要先寫一個(gè)問號(hào)?,<name>是我們對(duì)組的命名,不要太離譜就行;<pattern>是我們的正則表達(dá)式,和非命名捕獲是一樣的。

String content = "sajnj ax1122s sjnaj4529 s584";

        String regex = "(?<group1>\\d\\d)(?<group2>\\d\\d)";
        Pattern compile = Pattern.compile(regex);
        Matcher matcher = compile.matcher(content);
        while (matcher.find()){
            System.out.println(matcher.group("group1"));
            System.out.println(matcher.group("group2"));
        }

非捕獲分組

????????Java正則表達(dá)式中的不捕獲匹配(Non-capturing Group)指的是使用括號(hào)來分組匹配,但不會(huì)將該分組的匹配結(jié)果保存到匹配結(jié)果中。這樣可以在正則表達(dá)式中使用括號(hào)進(jìn)行邏輯分組,但不會(huì)捕獲分組的內(nèi)容,從而減少內(nèi)存開銷并提高性能。

? ? ? ? 也就是說,雖然有括號(hào)但是不算是一個(gè)組,你使用組索引 matcher.group(n) 是獲取不到結(jié)果的。

String content = "industries industry";

        Pattern pattern = Pattern.compile("industr(?:y|ies)");

        Matcher matcher = pattern.matcher(content);

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

輸出:

industries
industry

?

常用分組構(gòu)造形式 說明
(?:pattern) 匹配 pattern 但不捕獲該匹配的子表達(dá)式,即它是一個(gè)非捕獲匹配,常用來代替我們的或( | )語句。
(?=pattern)

它是一個(gè)非捕獲匹配(正向預(yù)查)。例如 "Windows (?=95|98|NT|2000)" 匹配 "Windows 2000"中的 "Windows",但不匹配 "Windows 3.1"中的 "Windows'。

"(?=95|98|NT|2000)":正向預(yù)查,用于確定在匹配 "Windows" 后面的字符串是 "95"、"98"、"NT" 或者 "2000"。它使用了豎線字符 "|" 來表示 "或" 的關(guān)系,即滿足其中一個(gè)條件即可。注意,這個(gè)預(yù)查不會(huì)消費(fèi)輸入字符串,也不會(huì)將 "95"、"98"、"NT" 或者 "2000" 匹配結(jié)果保存到匹配結(jié)果中。
因此,這個(gè)正則表達(dá)式可以匹配"Windows95"、"Windows98"、"WindowsNT" 和"Windows2000",但不會(huì)匹配 "WindowsXP" 或者"Windows10"。它可以用于查找包含特定版本的 "Windows" 字符串,用于特定的匹配需求。

(?!attern) 它也是一個(gè)非捕獲匹配(負(fù)向預(yù)查)。假設(shè)有一個(gè)正則表達(dá)式 (?!abc),它表示匹配任意一個(gè)不以 "abc" 結(jié)尾的字符串。例如 "Windows (?=95|98|NT|2000)" 匹配 "Windows XP"中的 "Windows",但不匹配 "Windows 2000"中的 "Windows'。
正向預(yù)查?
String content = "My operating system is Windows 11,his operating system is Windows XP";

        Pattern pattern = Pattern.compile("Windows (?=11|XP)");

        Matcher matcher = pattern.matcher(content);

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

運(yùn)行結(jié)果:

Windows
Windows

????????調(diào)試正則表達(dá)式后,發(fā)現(xiàn) (?=pattern)這種非捕獲分組,它必須滿足括號(hào)后面的條件才能被匹配,但是比如"Windows (?=11|XP)",要被匹配到的只可能是 "Windows 11" 或者 "Windows XP",但是這里的"11"和"XP"不會(huì)被保存到結(jié)果。

負(fù)向預(yù)查
String content = "My operating system is Windows 11,his operating system is Windows XP";

        Pattern pattern = Pattern.compile("Windows (?!8|9|10)");

        Matcher matcher = pattern.matcher(content);

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

運(yùn)行結(jié)果:?

Windows
Windows

????????調(diào)試正則表達(dá)式后,發(fā)現(xiàn) (?!pattern)這種非捕獲分組,它必須滿足括號(hào)后面的條件才能被匹配,但是比如"Windows (?=11|XP)",要被匹配到的只可能是除了 "Windows 11" 和?"Windows XP"之外的其他"Windows xxxx"的字符串,而且這里的"xxxx"同樣不會(huì)被保存到結(jié)果。?文章來源地址http://www.zghlxwxcb.cn/news/detail-641905.html

到了這里,關(guān)于Java 正則表達(dá)式【基本語法】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java 正則表達(dá)式

    正則表達(dá)式的元字符可以大致分為六類: 限定符 選擇匹配符 分組組合和反向引用符 特殊字符 字符匹配符 定位符 轉(zhuǎn)義符 \\\\ 符號(hào)在檢索某些特殊字符的時(shí)候可以使用,否則檢索不到結(jié)果。 在Java中是 \\\\ ,而其他語言則是 。 一般 . * + ( ) $ / ? [ ] { } 都可能需要轉(zhuǎn)義符 符號(hào)

    2024年02月21日
    瀏覽(28)
  • 正則表達(dá)式(Java)

    正則表達(dá)式(Java)

    正則表達(dá)式是由一些特定的字符組成,代表一個(gè)規(guī)則,可以用來檢驗(yàn)數(shù)據(jù)格式是否合法,也可以在一段文本中查找滿足要求的內(nèi)容。 如果使用代碼檢驗(yàn)數(shù)據(jù)是否正確: 使用正則表達(dá)式: String提供了一個(gè)匹配正則表達(dá)式的方法:? 圖片來源heimait \\\\d才會(huì)當(dāng)成d使用 (?i)表示忽略大

    2024年02月20日
    瀏覽(25)
  • 正則表達(dá)式(JAVA)

    正則表達(dá)式在用于 校驗(yàn)信息 是否 滿足某些規(guī)則 的時(shí)候,非常的好用 在 文本中查找 滿足要求的內(nèi)容 符號(hào) 作用 補(bǔ)充 [abc] 只能是a,b或c 匹配的一個(gè)字符只能是 [] 范圍內(nèi)的其中一個(gè) [^abc] 除了a,b,c之外的任何字符 ^ 符號(hào)類似 非 [a-zA-Z] a到z A到Z ,包括范圍 - 作用是由…到… ,兩個(gè)或

    2024年02月10日
    瀏覽(35)
  • JAVA中正則表達(dá)式

    JAVA中正則表達(dá)式

    接下來,學(xué)習(xí)一個(gè)全新的知識(shí),叫做正則表達(dá)式。 正則表達(dá)式其實(shí)是由一些特殊的符號(hào)組成的,它代表的是某種規(guī)則。 正則表達(dá)式的作用1:用來校驗(yàn)字符串?dāng)?shù)據(jù)是否合法 正則表達(dá)式的作用2:可以從一段文本中查找滿足要求的內(nèi)容 5.1 正則表達(dá)式初體驗(yàn) 現(xiàn)在,我們就以QQ號(hào)碼

    2024年01月20日
    瀏覽(24)
  • JAVA系列---正則表達(dá)式

    編號(hào) 元字符 匹配功能 1 . 匹配除換?符以外的任意字符 2 w 匹配字?或數(shù)字或下劃線 3 s 匹配任意的空?符 4 d 匹配數(shù)字 5 n 匹配?個(gè)換?符 6 t 匹配?個(gè)制表符 7 ^ 匹配字符串的開始 8 $ 匹配字符串的結(jié)尾 9 W 匹配?字?或數(shù)字或下劃線 10 D 匹配?數(shù)字 11 S 匹配?空?符

    2024年02月15日
    瀏覽(38)
  • Java 正則表達(dá)式匹配

    正則表達(dá)式: 定義一個(gè)搜索模式的字符串。 正則表達(dá)式可以用于搜索、編輯和操作文本。 正則對(duì)文本的分析或修改過程為:首先正則表達(dá)式應(yīng)用的是文本字符串(text/string),它會(huì)以定義的模式從左到右匹配文本,每個(gè)源字符只匹配一次。 正則表達(dá)式 匹配 this is text 精確匹配

    2024年02月06日
    瀏覽(29)
  • Java的正則表達(dá)式

    正則表達(dá)式是一種強(qiáng)大的字符串匹配工具,可以在很多領(lǐng)域得到廣泛使用。在Java中,正則表達(dá)式也被廣泛應(yīng)用于字符串匹配、查找和替換等方面。本文將介紹Java中常用的正則表達(dá)式語法以及其使用方法,供大家參考。 Java中使用正則表達(dá)式需要使用java.util.regex包中的類。其中

    2024年02月07日
    瀏覽(24)
  • Java038——正則表達(dá)式

    正則表達(dá)式通常被用于判斷語句中,用來檢查某一字符串是否滿足某一格式。正則表達(dá)式是含有一些具有特殊意義字符的字符串,這些特殊字符稱為正則表達(dá)式的元字符。例如,“d”表示數(shù)字 0~9 中的任何一個(gè),“d”就是元字符。正則表達(dá)式中的元字符及其意義下所示。 在

    2024年02月13日
    瀏覽(27)
  • 【Java 基礎(chǔ)篇】Java 正則表達(dá)式

    正則表達(dá)式是一種強(qiáng)大的文本模式匹配工具,它可以幫助我們?cè)谖谋局胁檎?、替換和提取特定模式的內(nèi)容。Java 提供了豐富的正則表達(dá)式支持,通過 java.util.regex 包中的類和方法,我們可以在 Java 程序中使用正則表達(dá)式進(jìn)行字符串處理。 本篇博客將介紹 Java 正則表達(dá)式的基本

    2024年02月09日
    瀏覽(32)
  • 【JAVA】正則表達(dá)式是啥?

    【JAVA】正則表達(dá)式是啥?

    個(gè)人主頁:【??個(gè)人主頁】 系列專欄:【??初識(shí)JAVA】 如果我們想要判斷給定的字符串是否符合正則表達(dá)式的過濾邏輯(稱作“匹配”),可以通過正則表達(dá)式,從字符串中獲取我們想要的特定部分。今天我們要介紹的就是 正則表達(dá)式 。 正則表達(dá)式是對(duì)字符串(包括普通

    2024年02月14日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包