黑马程序员——11 正则表达式
------Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! -------
正則表達式
一、概念
符合一定規則的表達式,用于專門操作字符串,可以簡化對字符串的復雜操作,主要用于一些特定的符號來表示一些代碼操作。
二、常見符號
2.1字符
x????????????????? 字符 x
\\???????????????? 反斜線字符
\t???????????????? 制表符 ('\u0009')
\n???????????????? 新行(換行)符 ('\u000A')
\r???????????????? 回車符 ('\u000D')
\f???????????????? 換頁符 ('\u000C')
\a???????????????? 報警 (bell) 符 ('\u0007')
2、字符類
[abc]??????????????????? a、b或 c(簡單類)
[^abc]???????????????? 任何字符,除了 a、b或 c(否定)
[a-zA-Z]?????????????? a到 z或 A 到 Z,兩頭的字母包括在內(范圍)
[a-d[m-p]]??????????? a到 d或 m 到 p:[a-dm-p](并集)
[a-z&&[def]]?????????????? d、e或 f(交集)
[a-z&&[^bc]]??????? a到 z,除了 b和 c:[ad-z](減去)
[a-z&&[^m-p]]???? a到 z,而非 m到 p:[a-lq-z](減去)
3、預定義字符類
.???????????????????????? 任何字符(與行結束符可能匹配也可能不匹配)
\d??????????????????????? 數字:[0-9]
\D?????????????????????? 非數字: [^0-9]
\s??????????????????????? 空白字符:[ \t\n\x0B\f\r]
\S?????????????????????? 非空白字符:[^\s]
\w?????????????????????? 單詞字符:[a-zA-Z_0-9]
\W????????????????????? 非單詞字符:[^\w]
4、邊界匹配器
^???????????????????????? 行的開頭
$???????????????????????? 行的結尾
\b??????????????????????? 單詞邊界
\B?????????????????????? 非單詞邊界
\A?????????????????????? 輸入的開頭
\G?????????????????????? 上一個匹配的結尾
\Z?????????????????????? 輸入的結尾,僅用于最后的結束符(如果有的話)
\z??????????????????????? 輸入的結尾
5、Greedy數量詞
X??????????????????????? X,一次或一次也沒有
X*?????????????????????? X,零次或多次
X+?????????????????????? X,一次或多次
X{n}??????????????????? X,恰好 n次
X{n,}?????????????????? X,至少 n次
X{n,m}??????????????? X,至少 n次,但是不超過 m 次
6、組和捕獲
捕獲組可以通過從左到右計算其開括號來編號。例如,在表達式 ((A)(B(C)))中,存在四個這樣的組:
??????????????????? 1???? ((A)(B(C)))
??????????????????? 2???? \A
??????????????????? 3???? (B(C))
??????????????????? 4???? (C)
組零始終代表整個表達式。在替換中常用$匹配組的內容。
切割:利用String類中的String[]? sqlit(String? regex)方法來切割字符串
說明:
??????? 按疊詞完成切割:為了讓規則被重用,可將規則封裝成一個組,用()完成。組的出現都有編號,從1開始。想要使用已有的組可通過\n(n就是組的編號)的形式來獲取。
??????? 對于組中所匹配的字符,可以用$n來獲取。$在正則中表示行的結尾,所以出現在正則中不能用來表示組,一般用于替換中。如下面功能中。
三、替換: String replaceAll(String regex,String replacement)方法。
四、獲取:將字符串中的符合規則的子串取出。
操作步驟:
(1)將正則表達式封裝成對象。
??????? (2)讓正則對象和要操作的字符串相關聯。
??????? (3)關聯后,獲取正則匹配引擎。
??????? (4)通過引擎對符合規則的子串進行操作,比如取出。
五、四種功能的選擇(思路方式):
??????? (1)如果只想知道該字符是否對是錯,使用匹配。
??????? (2)想要將已有的字符串變成另一個字符串,替換。
??????? (3)想要按照自定的方式將字符串變成多個字符串。切割。獲取規則以外的子串。
??????? (4)想要拿到符合需求的字符串子串,獲取。獲取符合規則的子串。
轉載于:https://www.cnblogs.com/kvietaword/p/4535787.html
總結
以上是生活随笔為你收集整理的黑马程序员——11 正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSON与js对象序列化
- 下一篇: 关于z-index的总结