欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:【JavaSE】之正則表達(dá)式

柚子快報(bào)邀請(qǐng)碼778899分享:【JavaSE】之正則表達(dá)式

http://yzkb.51969.com/

【JavaSE】正則表達(dá)式

前言一、正則表達(dá)式簡(jiǎn)介1.正則表達(dá)式是什么2.正則表達(dá)式怎么用

二、普通字符三、非打印字符四、特殊字符五、限定符六、定位符后記

前言

本文為Java基礎(chǔ)正則表達(dá)式相關(guān)知識(shí)介紹,Java全棧學(xué)習(xí)路線(xiàn)可參考:【Java全棧學(xué)習(xí)路線(xiàn)】最全的Java學(xué)習(xí)路線(xiàn)及知識(shí)清單,Java自學(xué)方向指引,內(nèi)含最全Java全棧學(xué)習(xí)技術(shù)清單~

一、正則表達(dá)式簡(jiǎn)介

1.正則表達(dá)式是什么

正則表達(dá)式,又稱(chēng)規(guī)則表達(dá)式。(英語(yǔ):Regular Expression,在代碼中常簡(jiǎn)寫(xiě)為regex、regexp或RE),計(jì)算機(jī)科學(xué)的一個(gè)概念。正則表達(dá)式通常被用來(lái)檢索、替換那些符合某個(gè)模式(規(guī)則)的文本。在眾多語(yǔ)言中都可以支持正則表達(dá)式,如Perl、PHP、Java、Python、Ruby等。當(dāng)然在Java中也可以通過(guò)處理字符串的方式達(dá)到檢索,替換文本字符串的目的,但是有了正則表達(dá)式寫(xiě)代碼更加簡(jiǎn)潔,通常兩三行代碼就可以達(dá)到目的,當(dāng)然這也是建立在熟悉正則表達(dá)式的基礎(chǔ)之上的。

2.正則表達(dá)式怎么用

正則表達(dá)式的使用分為只使用Pattern類(lèi)與兩個(gè)類(lèi)聯(lián)合使用:Pattern、Matcher兩種方式。

只使用Pattern類(lèi)

boolean Pattern.matches(String regex,CharSequence input)

regex:正則表達(dá)式input:要匹配的字符串

String str="12dr 32 d2d";

System.out.println(Pattern.matches("\\d+", str)); // 一定要全部是數(shù)字才行返回true

String[] Pattern.split(CharSequence input)

分割字符串

Pattern p=Pattern.compile("\\d+");

String[] str=p.split("a1b1c1");

// 結(jié)果:

// str[0]="a" str[1]="b" str[2]="c"

Pattern、Matcher聯(lián)合使用 Pattern、Matcher聯(lián)合使用可以多次匹配和對(duì)正則表達(dá)式的分組支持

Matcher.matches()

看是否全部為正則表達(dá)式的類(lèi)型,返回布爾值

Pattern compile = Pattern.compile("\\d+");

Matcher matcher = compile.matcher("22bb11");

System.out.println(matcher.matches());// 返回false,因?yàn)?22bb11"不全部是數(shù)字

// 結(jié)果:

// false

lookingAt()

只看第一個(gè)匹配到的是不是正則表達(dá)式要的

Pattern compile = Pattern.compile("\\d+");

Matcher matcher = compile.matcher("22bb11");

System.out.println(matcher.lookingAt());// 返回true,因?yàn)?22bb11"開(kāi)頭是數(shù)字

// 結(jié)果:

// true

find()

對(duì)字符串進(jìn)行匹配,匹配到的字符串可以在任何位置

Pattern compile = Pattern.compile("\\d+");

Matcher matcher = compile.matcher("22bb11");

System.out.println(matcher.find());// 返回true,因?yàn)?22bb11"中有數(shù)字?jǐn)?shù)字

當(dāng)使用matches(),lookingAt(),find()執(zhí)行匹配操作后,就可以利用以下三個(gè)方法得到更詳細(xì)的信息

start()返回匹配到的子字符串在字符串中的索引位置end()返回匹配到的子字符串的最后一個(gè)字符在字符串中的索引位置group()返回匹配到的子字符串

Pattern p=Pattern.compile("\\d+");

Matcher m=p.matcher("aaa2223bb");

m.find();//匹配2223 // 必寫(xiě),調(diào)用此方法后才能調(diào)用后面的三個(gè)方法

m.start();//返回3

m.end();//返回7,返回的是2223后的索引號(hào)

m.group();//返回2223

正則表達(dá)式還包括捕獲組的操作

"((\\d+)(.*))" // 一個(gè)括號(hào)中包含兩個(gè)括號(hào),每個(gè)括號(hào)中代表一種正則表達(dá)式,我們可以利用組的操作去獲取不同數(shù)據(jù)類(lèi)型的數(shù)據(jù)。

在 java 中start(),end(),group()均有一個(gè)重載方法

start(int i),end(int i),group(int i)專(zhuān)用于分組操作,Mathcer類(lèi)還有一個(gè)groupCount()用于返回有多少組

代碼示例:

Pattern p=Pattern.compile("([a-z]+)(\\d+)");

Matcher m=p.matcher("aaa2223bb");

m.find(); //匹配aaa2223

m.groupCount(); //返回2,因?yàn)橛?組

m.start(1); //返回0 返回第一組匹配到的子字符串在字符串中的索引號(hào)

m.start(2); //返回3

m.end(1); //返回3 返回第一組匹配到的子字符串的最后一個(gè)字符在字符串中的索引位置.

m.end(2); //返回7

m.group(1); //返回aaa,返回第一組匹配到的子字符串

m.group(2); //返回2223,返回第二組匹配到的子字符串

二、普通字符

普通字符包括沒(méi)有顯式指定為元字符的所有可打印和不可打印字符。這包括所有大寫(xiě)和小寫(xiě)字母、所有數(shù)字、所有標(biāo)點(diǎn)符號(hào)和一些其他符號(hào)。

字符描述[ABC]匹配 […] 中的所有字符[^ABC]匹配除了 […] 中字符的所有字符[A-Z]匹配所有大寫(xiě)字母[a-z]匹配所有小寫(xiě)字母.匹配除換行符(\n、\r)之外的任何單個(gè)字符,相等于 [^\n\r][\s\S]匹配所有。\s 是匹配所有空白符,包括換行,\S 非空白符,不包括換行。\w匹配字母、數(shù)字、下劃線(xiàn)。等價(jià)于 [A-Za-z0-9_]

三、非打印字符

非打印字符也可以是正則表達(dá)式的組成部分。

字符描述\cx匹配由x指明的控制字符。例如, \cM 匹配一個(gè) Control-M 或回車(chē)符。x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個(gè)原義的 ‘c’ 字符。\f匹配一個(gè)換頁(yè)符。等價(jià)于 \x0c 和 \cL。\n匹配一個(gè)換行符。等價(jià)于 \x0a 和 \cJ。\r匹配一個(gè)回車(chē)符。等價(jià)于 \x0d 和 \cM。\s匹配任何空白字符,包括空格、制表符、換頁(yè)符等等。等價(jià)于 [ \f\n\r\t\v]。\S匹配任何非空白字符。等價(jià)于 [^ \f\n\r\t\v]。\t匹配一個(gè)制表符。等價(jià)于 \x09 和 \cI。\v匹配一個(gè)垂直制表符。等價(jià)于 \x0b 和 \cK。

四、特殊字符

特殊字符,就是一些有特殊含義的字符,如上面說(shuō)的 runoob 中的 ,簡(jiǎn)單的說(shuō)就是表示任何字符串的意思。如果要查找字符串中的符號(hào),則需要對(duì) 進(jìn)行轉(zhuǎn)義,即在其前加一個(gè) \許多元字符要求在試圖匹配它們時(shí)特別對(duì)待。若要匹配這些特殊字符,必須首先使字符”轉(zhuǎn)義”,即,將反斜杠字符\ 放在它們前面

字符描述$匹配輸入字符串的結(jié)尾位置。如果設(shè)置了 RegExp 對(duì)象的 Multiline 屬性,則 $ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字符本身,請(qǐng)使用 $。( )標(biāo)記一個(gè)子表達(dá)式的開(kāi)始和結(jié)束位置。*匹配前面的子表達(dá)式零次或多次。要匹配 * 字符,前面加上 \ 。+匹配前面的子表達(dá)式一次或多次。要匹配 + 字符,前面加上 \。.匹配除換行符 \n 之外的任何單字符。要匹配 . ,前面加上 \ 。[標(biāo)記一個(gè)中括號(hào)表達(dá)式的開(kāi)始?匹配前面的子表達(dá)式零次或一次\將下一個(gè)字符標(biāo)記為或特殊字符、或原義字符、或向后引用、或八進(jìn)制轉(zhuǎn)義符^非{標(biāo)記限定符表達(dá)式的開(kāi)始

五、限定符

字符描述*匹配前面的子表達(dá)式零次或多次。例如,zo 能匹配 “z” 以及 “zoo”。 等價(jià)于{0,}。+匹配前面的子表達(dá)式一次或多次。例如,’zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等價(jià)于 {1,}。?匹配前面的子表達(dá)式零次或一次。例如,”do(es)?” 可以匹配 “do” 、 “does” 中的 “does” 、 “doxy” 中的 “do” 。? 等價(jià)于 {0,1}。{n}n 是一個(gè)非負(fù)整數(shù)。匹配確定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的兩個(gè) o。{n,}n 是一個(gè)非負(fù)整數(shù)。至少匹配n 次。例如,’o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有o?!痮{1,}’ 等價(jià)于 ‘o+’?!痮{0,}’ 則等價(jià)于 ‘o*’。{n,m}m 和 n 均為非負(fù)整數(shù),其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,”o{1,3}” 將匹配 “fooooood” 中的前三個(gè) o。’o{0,1}’ 等價(jià)于 ‘o?’。請(qǐng)注意在逗號(hào)和兩個(gè)數(shù)之間不能有空格。

例1:/[1-9][0-9]*/ [1-9]設(shè)置第一個(gè)數(shù)字不是 0,[0-9]* 表示任意多個(gè)數(shù)字

例2:/[0-9]{1,2}/ 匹配 0~99 的兩位數(shù) 缺點(diǎn)是:只能匹配兩位數(shù)字,而且可以匹配 0、00、01、10 99 等編號(hào)仍只匹配開(kāi)頭兩位數(shù)字。

例3:/[1-9][0-9]?/ 或 /[1-9][0-9]{0,1}/ 匹配 1~99 的正整數(shù)

六、定位符

定位符用來(lái)描述字符串或單詞的邊界,^ 和 $ 分別指字符串的開(kāi)始與結(jié)束,\b 描述單詞的前或后邊界,\B 表示非單詞邊界。

字符描述^匹配輸入字符串開(kāi)始的位置。如果設(shè)置了 RegExp 對(duì)象的 Multiline 屬性,^ 還會(huì)與 \n 或 \r 之后的位置匹配。$匹配輸入字符串結(jié)尾的位置。如果設(shè)置了 RegExp 對(duì)象的 Multiline 屬性,$ 還會(huì)與 \n 或 \r 之前的位置匹配。\b匹配一個(gè)單詞邊界,即字與空格間的位置。\B非單詞邊界匹配。

注意:

不能將限定符與定位符一起使用。由于在緊靠換行或者單詞邊界的前面或后面不能有一個(gè)以上位置,因此不允許諸如 ^* 之類(lèi)的表達(dá)式。若要匹配一行文本開(kāi)始處的文本,請(qǐng)?jiān)谡齽t表達(dá)式的開(kāi)始使用 ^ 字符。不要將 ^ 的這種用法與中括號(hào)表達(dá)式內(nèi)的用法混淆。若要匹配一行文本的結(jié)束處的文本,請(qǐng)?jiān)谡齽t表達(dá)式的結(jié)束處使用 $ 字符。

例子:

/^Chapter [1-9][0-9]{0,1}$/ :匹配Chapter 1到Chapter 99的字符/\bCha/ :匹配Cha開(kāi)頭的單詞/ter\b/ :匹配ter結(jié)尾的單詞/\Bapt/ :匹配 Chapter 中的字符串 apt,但不匹配 aptitude 中的字符串 apt

后記

Java全棧學(xué)習(xí)路線(xiàn)可參考:【Java全棧學(xué)習(xí)路線(xiàn)】最全的Java學(xué)習(xí)路線(xiàn)及知識(shí)清單,Java自學(xué)方向指引,內(nèi)含最全Java全棧學(xué)習(xí)技術(shù)清單~

柚子快報(bào)邀請(qǐng)碼778899分享:【JavaSE】之正則表達(dá)式

http://yzkb.51969.com/

好文鏈接

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19334064.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪(fǎng)問(wèn)

文章目錄