string 類中有個matches(string regx)方法,返回乙個布林型別的值;用來匹配已給字串是否與regx向匹配;
正規表示式用於操作字串資料。需要
通過一些特定的符號來體現,因此必須要掌握一些特殊符號。使用時要經常檢視api中string類中matches方法中的正規表示式符號
字元類[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](減去)
預定義字元類
.任何字元(與行結束符可能匹配也可能不匹配)
\d數字:[0-9]
\d非數字: [^0-9]
\s空白字元:[ \t\n\x0b\f\r]
\s非空白字元:[^\s]
\w單詞字元:[a-za-z_0-9]
\w非單詞字元:[^\w]
邊界匹配器
^行的開頭
$行的結尾
\b單詞邊界
\b非單詞邊界
\a輸入的開頭
\g上乙個匹配的結尾
\z輸入的結尾,僅用於最後的結束符(如果有的話)
\z輸入的結尾
greedy 數量詞x?
x,一次或一次也沒有x*
x,零次或多次x+
x,一次或多次
xx,恰好 n 次
xx,至少 n 次
xx,至少 n 次,但是不超過 m 次
例子:反斜線字元 ('\') 用於引用轉義構造,如上表所定義的,同時還用於引用其他將被解釋為非轉義構造的字元。因此,表示式 \\ 與單個反斜線匹配,而 \:匹配第一位不能為0的5—15位的數字;
as?b:匹配a和b之間不存在s或只存在一次s的字串;as*b:s可以出現零次或者多次;as+b:s可以出現一次或者多次
2、切割
str.split(" +"):遇到乙個空格或者是多個空格時切割
str.split("\\."): 遇到.時進行切割(注意第乙個\用來轉義第二個\,第二個\用來轉義.)
str.split((.)\\1+):表示遇到疊詞進行切割,例如遇到aaa,bbbbb時切割
3、替換
其實使用的就是string類中的repalceall()方法
str.repalceall("(.)\\1+","#"):將字串中的疊詞用乙個#號來代替
str.repalceall("(.)\\1+","$1"):將字串中的疊詞取消重複,變成乙個詞(其中$代表拿到前乙個正規表示式中的第一組拿過來)
str.repalceall("(\\d)\\d(\\d)","$1****$2"):將手機號中的中間四位隱藏起來
4、獲取
pattern p = pattern.compile
("\\b[a-z]\\b");\\將正則規則進行物件封裝
matcher m = p.matcher
("da jia hao jin tian bu fang jia");\\通過正則物件的matches方法組付出相關聯。獲取對字串操作的匹配器物件matcher
\\boolean b = m.matches
();\\通過matcher匹配器物件的方法對字串進行操作
m.find();\\對匹配物件進行查詢,只有先查詢才能進行返回字串
m.group();\\返回匹配的字串
還可通過while(m.find())與str.replacefirst("regx",m.group)等操作聯合進行替換。
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...