Java——正则表达式
Java——正則表達(dá)式
近來(lái)學(xué)習(xí)到了正則表達(dá)式,在此整理以便理解。
1.定義:
正則表達(dá)式(regular expression)是一個(gè)字符串,可用于描述匹配一個(gè)字符串集合的模式,便于字符串的處理。可以使用正則表達(dá)式來(lái)進(jìn)行匹配、替換和拆分字符串。
2.匹配字符串:
String類(lèi)中的matches方法不僅可以匹配一個(gè)固定的字符串,還可以匹配符合一個(gè)模式的字符串集。
例如:(語(yǔ)句結(jié)果為true。)
其中“Java.*”即為正則表達(dá)式,它描述了一個(gè)字符串模式,即:以Java開(kāi)始后面跟0個(gè)或多個(gè)字符串,其中,子字符串“.*”匹配0個(gè)或多個(gè)任意字符。
3.正則表達(dá)式語(yǔ)法:
???????? 正則表達(dá)式由字面值字符及特殊符號(hào)所組成。下表中列舉出了正則表達(dá)式的常用的語(yǔ)法。
表1:正則表達(dá)式常用語(yǔ)法
?
| 正則表達(dá)式 | 匹配 | |
| 1 | x | 指定字符x |
| 2 | . | 任意單個(gè)字符,換行符除外 |
| 3 | (ab|cd) | ab或者cd |
| 4 | [abc] | a、b、c |
| 5 | [^abc] | 除了a、b或者c以外的任意字符 |
| 6 | [a-z] | a到z |
| 7 | [^a-z] | 除了a到z以外的任意字符 |
| 8 | [a-e[m-p]] | a到e或m到p |
| 9 | [a-e&&[c-p]] | a到e與c到p的交集 |
| 10 | \d | 一位數(shù)字,等同于[0-9] |
| 11 | \D | 一位非數(shù)字 |
| 12 | \w | 單詞字符 |
| 13 | \W | 非單詞字符 |
| 14 | \s | 空白字符 |
| 15 | \S | 非空白字符 |
| 16 | p* | 0次或者多次出現(xiàn)模式p |
| 17 | p+ | 1次或者多次出現(xiàn)模式p |
| 18 | p? | 0次或者1次出現(xiàn)模式p |
| 19 | p{n} | 正好出現(xiàn)n次模式p |
| 20 | p{n,} | 至少出現(xiàn)n次模式p |
| 21 | p{n,m} | n到m(不包含)次出現(xiàn)模式p |
| 22 | \p{P} | 一個(gè)標(biāo)點(diǎn)字符!”@#$%^&*()等 |
?
Ps1:反斜杠是一個(gè)特殊的字符,在字符串中開(kāi)始轉(zhuǎn)義序列。因此Java中需要使用\\來(lái)表示\。
Ps2:空白字符是" "、"\t"、"\n"、"\r"、"\f",因此\s和[\t\n\r\f]等同,\S和[^\t\n\r\f]等同。
Ps3:單詞字符是任何的字母,數(shù)字或下劃線字符。因此\w等同于[a-z[A-Z][0-9]_]或者簡(jiǎn)化為[a-Za-z0-9]。
Ps4:可以使用括號(hào)來(lái)將模式進(jìn)行分組。例如:(ab){3}匹配ababab,而ab{3}匹配abbb。
Ps5:表1中后面的六個(gè)條目*、+、?、{n}、{n,}以及{n,m}稱為量詞符(quantifier),用于確定量詞符前面的模式會(huì)重復(fù)多少次。例如,A*匹配0或者多個(gè)A,A+匹配1或者多個(gè)A,A?匹配0或者1個(gè)A。A{3}精確匹配AAA,A{3,}至少匹配3個(gè)A,A{3,6}匹配3到6之間個(gè)A。*等同于{0,},+等同于{1,},?等同于{0,1}。
Warning:不要在重復(fù)量詞符中使用空白。例如,A{3,6}不能寫(xiě)成逗號(hào)后有一個(gè)空白符的A{3, 6}。
常用案例構(gòu)建正則表達(dá)式:
(xxx-xxxx-xxxx)
2.QQ郵箱:以10位QQ號(hào)為例(xxxxxxxxxx@qq.com)
參考資料:
梁勇. Java語(yǔ)言程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)篇[M]. 北京:機(jī)械工業(yè)出版社,2018.167-175
?
總結(jié)
以上是生活随笔為你收集整理的Java——正则表达式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何启用计算机的远程服务,远程桌面服务,
- 下一篇: Java实体对象为什么一定要实现Seri