正規表示式知識點總結

2021-08-21 15:17:22 字數 3194 閱讀 6566

* 1.正規表示式:符合一定規則的表示式。

* 2.作用:用於專門操作字串。

* 3.特點:用一些特定的符號來表示一些**操作,這樣可以簡化書寫。 所以學習正規表示式,就是在學習一些特殊符號的使用。

* 4.好處:可以簡化對字串的複雜操作。

* 5.弊端:符號定義越多,正則越長,閱讀性越差。

* 1.匹配:boolean matches(string regex) 

*    用規則匹配整個字串,只要有一處不符合規則,就匹配結束,返回false

* 2.切割:string split(string regex) 

*    根據給定的正規表示式的匹配拆分此字串

*典型demo:

*(1)splitdemo("zs  ls   ww"," +");//按照多個空格來進行切割

*(2)splitdemo("zs.ls.ww","\\.");//按照 . 來進行切割

*(3)splitdemo("d:\\abc\\de","\\\\");//按照\\來進行切割

*(4)splitdemo("abcddefgkkkhi","(.)\\1+");//按照疊詞完成切割

* 3.替換:string replaceall(string regex, string replacement) 

*    使用給定的 replacement 替換此字串所有匹配給定的正規表示式的子字串

*典型demo:

*(1)replacealldemo(str,"\\d","#");//將字串中的連續超過5個的數字替換成#

*(2)replacealldemo(str2,"(.)\\1+","*");//將疊詞替換成*    

*(3)replacealldemo(str3,"(.)\\1+","$1");//將重疊的字元替換成單個字母,如:ddd變成d        

* 4.獲取:將字串中符合規則的子串取出

*操作步驟

*(1)將正規表示式封裝成物件;

*(2)讓正則物件和要操作的字串相關聯;

*(3)關聯後,獲取正則匹配引擎;

*(4)通過引擎對符合規則的子串進行操作,比如:取出

*典型demo:            

* string str = "ming tian fang jia lea";

* string reg = "\\b[a-z]\\b";//"\b"表示單詞邊界

* pattern p = pattern.compile(reg);//將規則封裝成物件

* matcher m = p.matcher(str);//讓正則物件和要作用的字串相關聯,獲取匹配器物件

* //類似於迭代器

* while(m.find())    

* 5.四種功能選用方式

* 思路:

*(1)如果只想知道該字元是對是錯,使用匹配;

*(2)想要將已有的字串變成另乙個字串,使用替換;

*(3)想要按照自定的方式將乙個字串變成多個字串,使用切割;(獲取規則以外的子串)

*(4)想要拿到符合需求的字串子串,使用獲取。(獲取符合規則的子串)

*1.匹配的應用

*(1)應用一:對qq號碼進行校驗   regex="[1-9]\\d";

*(2)應用二:對手機號段進行校驗 regex="1[358]\\d";

*(3)應用三:對郵件位址進行校驗 

* regex="[a-za-z0-9_]+@[a-za-z0-9]+(\\.[a-za-z]+)";//較為精確的匹配

* regex="\\w+@\\w+(\\.\\w+)+";//相對不太精確的匹配

*2.替換的應用

* 將ip位址進行位址段順序的排序【必須掌握】    

* 例如:192.68.1.254  102.49.23.013  10.10.10.10  2.2.2.2 

* 思路:

* 按照字串自然順序,只要讓它們每一段都是3位即可。

*(1)按照每一段需要的最多的0進行補齊,那麼每一段就會至少保證有三位;

*(2)將每一段只保留三位,這樣,所有的ip位址都是每一段三位。     

*3.獲取的應用

*   獲取指定文件中的郵件位址(網頁爬蟲)

*1.字元類

* [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](減去) 

*2.預定義字元類

* . 任何字元(與行結束符可能匹配也可能不匹配) 

* \d 數字                [0-9] 

* \d 非數字            [^0-9] 

* \s 空白字元         [ \t\n\x0b\f\r] 

* \s 非空白字元     [^\s] 

* \w 單詞字元        [a-za-z_0-9] 

* \w 非單詞字元   [^\w] 

*3.greedy 數量詞

* x? x,          零次或一次

* x* x,          零次或多次 

* x+ x,          一次或多次 

* x x,       恰好 n 次 

* x x,      至少 n 次 

* x x,   至少 n 次,但是不超過 m 次 

正規表示式知識點

re.match與re.search的區別 re.match只匹配字串的開始,如果字串開始不符合正規表示式,則匹配失敗,函式返回none 而re.search匹配整個字串,直到找到乙個匹配。flags 標誌位,用於控制正規表示式的匹配方式,如 是否區分大小寫,多行匹配等等 import re s 1...

正規表示式知識點

正則的知識點 1.建立例項 var reg new regexp pattern,flag d g 2.flag 識別符號 1.i 忽略大小寫匹配 2.m 多行匹配 3.g 全域性匹配 應用與所有,而不是找到第乙個就停止 3.第一段知識點 1.xyz xyz中任意乙個字元 等價於 x z 2.xyz...

正規表示式及知識點總結

match 字串用法 成功則返回值,錯誤則返回null var str 18229096120 str.match test 正則物件用法 成功則返回true,錯誤則返回false 宣告正則變數 var reg new regexp reg.test str 匹配字串的開頭,在多行檢索中,匹配一行的...