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

java基礎(chǔ)知識——23.正則表達式

這篇具有很好參考價值的文章主要介紹了java基礎(chǔ)知識——23.正則表達式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

這篇文章我們簡略的講一下java的正則表達式

目錄

1.正則表達式概述

2.正則表達式的簡單匹配規(guī)則

3.正則表達式的復(fù)雜匹配規(guī)則

4.正則表達式的分組匹配規(guī)則

5.正則表達式的非貪婪匹配

6.使用正則表達式進行搜索和替換


1.正則表達式概述

首先,我們需要明確一個觀點,什么是正則表達式?

正則表達式:可以定義出一個字符串的結(jié)構(gòu)特征,然后我們可以利用這個特征來查找、匹配、替換一個字符串中的某些內(nèi)容。

解釋:其實很好理解。就比如這里有一個字符串,很復(fù)雜,但是呢,我知道一些子串或者說具體的部分內(nèi)容,現(xiàn)在我想匹配一下這個字符串里面是否含有這些子串,或者說這個字符串是否符合我的目標(biāo)格式,又或者說,我只知道一個大概的字符串特征,但是我想在一大堆字符串中查找一個有這個特征的字符串,等等等等,這些操作都是靠正則表達式來完成的

案例演示:

需求:給出字符串“3ahfget56adwnf8adba4jk5sg6wfa4dw”,現(xiàn)在要求將該字符串中但凡出現(xiàn)“數(shù)組+a”的部分全部替換為“---”

代碼如下:

java基礎(chǔ)知識——23.正則表達式

java基礎(chǔ)知識——23.正則表達式

代碼:

public class zhengzeTest {
    public static void main(String[] args) {
        String s = "3ahfget56adwnf8adba4jk5sg6wfa4dw";
        String r = s.replaceAll("\\da","--");
        System.out.println("r = "+r);

    }
}

?解析:初看很簡單,再看很復(fù)雜。字符串替換,我們都會,因為有java提供的StringAPI,但是,這些替換都是將具體的內(nèi)容替換為新的內(nèi)容,而現(xiàn)在我們要求的是將“數(shù)字+a”這個內(nèi)容替換為新內(nèi)容,這個內(nèi)容不是固定的啊,它可以是“1a”可以是“3a”,它不是固定的,這就很麻煩。這個時候就要用到正則表達式了。正則表達式的定義就是,我們定義一個字符創(chuàng)的結(jié)構(gòu)特征,然后我們利用這個特征來對字符串進行相應(yīng)的操作。所以我們就要定義一個字符串的結(jié)構(gòu)特征,這個特征是“xa”,但凡符合這個特征的部分,都要被替換。這就是正則表達式的作用。

到此,我們算是初步的認(rèn)識了什么是正則表達式,正則表達式有什么用,用在什么地方了。

2.正則表達式的簡單匹配規(guī)則

下面來講一下正則表達式的簡單匹配規(guī)則

正則表達式的匹配規(guī)則:從左到右按規(guī)則匹配

下面就結(jié)合具體的實例來講一下。

如果,我們編寫了一個正則表達式“abc”,那么在匹配時,就只能匹配“abc”,不能匹配“Abc”或者“ab”或者“ac”

如果,我們編寫了一個正則表達式“a\&c”,那么在匹配時,就只能匹配“a&c”,不能匹配“Ac”或者“ac”或者“aC”

如果,我們編寫了一個正則表達式“a\u548cc”,那么在匹配時,就只能匹配“a與c”,不能匹配“A與c”或者“ac”或者“AC”。在正則表達式中,如果我們需要表示漢字,則我們需要其對應(yīng)的Unicode字符

如果,我們編寫了一個正則表達式“a.c”,那么在匹配時,就能匹配“a與c”或者“abc”,不能匹配“A與c”或者“ac”或者“AC”。在正則表達式中,我們用“.”來代表一個任意字符

如果,我們編寫了一個正則表達式“a\dc”,那么在匹配時,就能匹配“a0c”或者“a1c”或者“a2c”,不能匹配“A與c”或者“ac”或者“AC”。在正則表達式中,我們用“\d”來代表一個任意數(shù)字

如果,我們編寫了一個正則表達式“a\wc”,那么在匹配時,就能匹配“a_c”或者“abc”或者“a2c”,不能匹配“A與c”或者“ac”或者“AC”。在正則表達式中,我們用“ \w ”來代表一個任意字母,數(shù)字,下劃線

如果,我們編寫了一個正則表達式“a\sc”,那么在匹配時,就能匹配“a c”或者“a????????c”,不能匹配“A與c”或者“ac”或者“AC”。在正則表達式中,我們用“\s”來代表一個空格或者一個Tab

如果,我們編寫了一個正則表達式“a\Dc”,那么在匹配時,就能匹配“aAc”或者“a#c”,不能匹配“A2c”或者“ac”或者“AC”。在正則表達式中,我們用“\D”來代表一個非數(shù)字

如果,我們編寫了一個正則表達式“a\Wc”,那么在匹配時,就能匹配“a!c”或者“a c”,不能匹配“A2c”或者“ac”或者“AC”。在正則表達式中,我們用“\W”來代表一個非數(shù)字,字母,或下劃線

如果,我們編寫了一個正則表達式“a\d*”,那么在匹配時,就能匹配“a12”或者“a123”,不能匹配“A c”或者“a!”。在正則表達式中,我們用“*”來代表一個任意個字符,它的作用其實就是先匹配a,然后匹配"\d",然后因為有“*”,所以就可以有任意個“\d”了

如果,我們編寫了一個正則表達式“a\d+”,那么在匹配時,就能匹配“a1”或者“a12”,不能匹配“A與c”或者“a”或者“AC”。在正則表達式中,我們用“+”來表示,至少有一個+前面的正則表達式字符

如果,我們編寫了一個正則表達式“a\d?”,那么在匹配時,就能匹配“a”或者“a1”,不能匹配“A與c”或者“a12”或者“AC”。在正則表達式中,我們用“?”來表示零個或者一個其前面的正則表達式字符

如果,我們編寫了一個正則表達式“\d{3}”,那么在匹配時,就能匹配“123”或者“234”,不能匹配“12”或者“1234”或者“1”。在正則表達式中,我們用“{n}”來表示,應(yīng)該有n個其前面的字符

如果,我們編寫了一個正則表達式“\d{3,5}”,那么在匹配時,就能匹配“123”或者“2345”或者“23456”,不能匹配“12”或者“123456”或者“1”。在正則表達式中,我們用“{n,m}”來表示,應(yīng)該有n-m個其前面的字符

如果,我們編寫了一個正則表達式“\d{3,}”,那么在匹配時,就能匹配“123”或者“2344687”,不能匹配“12”或者“1”。在正則表達式中,我們用“{n,}”來表示,應(yīng)該至少有n個其前面的字符

下面用一張表來概述一下正則表達式的匹配規(guī)則:

正則表達式 規(guī)則 可以匹配
A 指定字符 A
\u548c 指定的Unicode字符
. 任意字符 a,b,&,0
\d 0~9 0,1,2,……,9
\w a~z,A~Z,0~9,_ a,A,0,_,……
\s 空格,Tab鍵
\D 非數(shù)字 a,A,&,_,……
\W 非\w &,@,中,……
\S 非\s

a,A,&,_,……

AB* 任意個數(shù)字符 A,AB,ABB,ABBB
AB+ 至少1個字符 AB,ABB,ABBB
AB? 0個或者1個字符 A,AB
AB{3} 指定個數(shù)字符 ABBB
AB{1,3} 指定范圍個數(shù)字符 AB,ABB,ABBB
AB{2,} 至少n個字符 ABB,ABBBB,……
AB{0,3} 至多n個字符 A,AB,ABB,ABBB

3.正則表達式的復(fù)雜匹配規(guī)則

下面來講一下正則表達式的復(fù)雜匹配規(guī)則

如果,我們編寫了一個正則表達式“^A\d{3}$”,那么在匹配時,就能匹配“A001”或者“A999”,不能匹配“B001”或者“A0001”。在正則表達式中,我們用^和$來匹配開頭和結(jié)尾

如果,我們編寫了一個正則表達式“[abc]1”,那么在匹配時,就能匹配“a1”或者“b1”或者“c1”,不能匹配“B1”或者“d1”。在正則表達式中,我們用[ ] 來匹配范圍內(nèi)的字符

拓展:[a-f]:a,b……f;[a-f0-9]{3}:aaa,a2d,123……

如果,我們編寫了一個正則表達“[^0-5]{3}”,那么在匹配時,就能匹配“789”或者“689”或者“ac8”,不能匹配“a21”或者“132”。在正則表達式中,我們用[^……]來匹配非范圍內(nèi)的字符

如果,我們編寫了一個正則表達“AB|CD”,那么在匹配時,就能匹配“AB”或者“CD”,不能匹配“ABCD”或者“AC”。在正則表達式中,我們用“ |?”來表示選擇

正則表達式 規(guī)則 可以匹配
^ 開頭 字符串開頭
$ 結(jié)尾 字符串結(jié)尾
[ABC] [……]內(nèi)任意字符 A,B,C
[A-F0-9xy] 指定范圍的字符 A……F,0-9,x,y
[^A-F] 指定范圍外的字符 非A……F
AB|CD AB或者CD AB,CD

4.正則表達式的分組匹配規(guī)則

正則表達式的分組匹配其實就是利用()來完成的,我們只需要在正則表達式的相應(yīng)位置加上()就行,就是相當(dāng)于改變了一下順序而已

5.正則表達式的非貪婪匹配

下面用一個例子來講解一下正則表達式的貪婪匹配和非貪婪匹配

例:我們需要判斷一串?dāng)?shù)字末尾0的個數(shù)

如下所示:“123000”:3個0;“12300”:2個0;“123”:0個0

我們可以的初始反應(yīng)一個是需要這樣寫:“^(\d+)(0*)”

java基礎(chǔ)知識——23.正則表達式

為什么會出現(xiàn)這樣的結(jié)果呢?因為正則表達式默認(rèn)的是貪婪匹配,就是說在匹配“^(\d+)”時,它會盡可能多的匹配,所以就會出現(xiàn)上面的結(jié)果

那應(yīng)該怎么解決呢?使用非貪婪匹配

非貪婪匹配就是盡可能少的匹配,它是用“?”來實現(xiàn)的,所以為了實現(xiàn)上面的案例,我們的正則表達式應(yīng)該為“^(\d+?)(0*)

這就是非貪婪匹配

6.使用正則表達式進行搜索和替換

使用正則表達式對字符串進行搜索和替換,其實本質(zhì)上就是對StringAPI的調(diào)用。我們需要熟悉StringAPI,然后熟悉正則表達式,編寫正確的正則表達式就可以啦。

在java中正則表達式并不是一個重點內(nèi)容,但是大家還是要有所了解。文章來源地址http://www.zghlxwxcb.cn/news/detail-429142.html

到了這里,關(guān)于java基礎(chǔ)知識——23.正則表達式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Java基礎(chǔ)十八(正則表達式 + 日期時間)

    1.1 普通字符 字符 描述 示例 [abc] 匹配 […] 中所有字符 [hlo] 匹配字符串 \\\"hello world\\\" 中所有的 h l o 字母 [^ABC] 匹配除了 […] 中所有字符 [hlo] 匹配字符串 \\\"hello world\\\" 中除了 h l o 的所有字母 [^a-z] 匹配除了 […] 中所有字符 [hlo] 匹配字符串 \\\"hello world\\\" 中除了 a 到 z 的所有字母 [A-

    2024年02月11日
    瀏覽(24)
  • 【自學(xué)筆記】01Java基礎(chǔ)-08Java常用API:05正則表達式與Lambda表達式

    【自學(xué)筆記】01Java基礎(chǔ)-08Java常用API:05正則表達式與Lambda表達式

    記錄Java基礎(chǔ)-常用API-正則表達式與Lambda表達式的內(nèi)容。 正則表達式在線練習(xí)網(wǎng)站 正則表達式是一種強大的文本處理工具,它使用特殊的字符和模式來匹配、查找、替換或提取字符串中的特定內(nèi)容。 在Java中,正則表達式的功能主要通過 java.util.regex 包中的 Pattern 和 Matcher 類實

    2024年01月19日
    瀏覽(40)
  • 0基礎(chǔ)學(xué)java-day27(正則表達式)

    0基礎(chǔ)學(xué)java-day27(正則表達式)

    為讓大家對正則表達式底層實現(xiàn)有一個直觀的映象,給大家舉個實例 給你一段字符串 ( 文本 ), 請找出所有四個數(shù)字連在一起的子串, 比如 : 應(yīng)該找到 1998 1999 3443 9889 === 分析底層實現(xiàn) RegTheory.java 用于指定其前面的字符和組合項連續(xù)出現(xiàn)多少次 定位符 , 規(guī)定要匹配的字符串出

    2024年01月21日
    瀏覽(28)
  • Java 基礎(chǔ)進階篇(十八):正則表達式匹配規(guī)則和應(yīng)用

    Java 基礎(chǔ)進階篇(十八):正則表達式匹配規(guī)則和應(yīng)用

    ??正則表達式是對字符串(包括普通字符(例如:a 到 z 之間的字母)和特殊字符(稱為“元字符”))操作的一種邏輯公式,就是用事先定義好的一些特定字符及這些特定字符的組合,組成一個“規(guī)則字符串”,這個“規(guī)則字符串”用來表達對字符串的一種過濾邏輯。正

    2024年02月13日
    瀏覽(36)
  • Python正則表達式知識梳理

    1.1 字符與字符類 (1) 特殊字符: . ^ $ ? + * { } [ ] ( ) | 以上特殊字符要想使用字面值,必須使用進行轉(zhuǎn)義 (2) 字符類 包含在[]中的一個或者多個字符被稱為字符類,字符類在匹配時如果沒有指定量詞則只會匹配其中的一個。 字符類內(nèi)可以指定范圍,如[a-zA-Z0-9],表示a到z,A到

    2024年02月12日
    瀏覽(15)
  • 【100天精通python】Day23:正則表達式,基本語法與re模塊詳解示例

    ? 目錄 ?專欄導(dǎo)讀? 1?正則表達式概述 2 正則表達式語法 2.1?正則表達式語法元素

    2024年02月14日
    瀏覽(50)
  • Python進階知識:整理6 -> 正則表達式
  • python正則表達式-正則基礎(chǔ)

    目錄 一、任一元素 二、匹配特定的字符類別 ? ? ? ? ?1、d? w 三、多個元素 ? ? ? ? ?1、兩位元素 [][] ? ? ? ? ?2、* + ? ? ? ? ? ?3、重復(fù)次數(shù) {} ? ? ? ? ?4、位置匹配 ^ $ ? ? ? ? ?5、子表達式() ????????[]:1、[ab]?匹配a或b; ? ? ? ?2、[0-9]?匹配任意一個數(shù)

    2024年02月05日
    瀏覽(22)
  • Java 之正則表達式語法及常用正則表達式匯總

    Java 之正則表達式語法及常用正則表達式匯總

    正則表達式,又稱規(guī)則表達式。(英語:Regular Expression,在代碼中常簡寫為 regex、regexp 或 RE),計算機科學(xué)的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規(guī)則)的文本。 正則表達式是對字符串(包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱

    2024年02月09日
    瀏覽(31)
  • Python 正則表達式RE知識學(xué)習(xí)

    正則表達式(Regular Expression)是一種強大的文本模式匹配工具,常用于在字符串中查找、替換、分割等操作。在 Python 中,可以使用內(nèi)置的 re 模塊來操作正則表達式。 字符匹配: 普通字符:正則表達式中的普通字符(如字母、數(shù)字、特殊字符)與字符串中的對應(yīng)字符進行匹

    2024年02月09日
    瀏覽(97)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包