正則表達(dá)式,是一種小型高度專業(yè)化的語言,描述了一種字符串匹配的模式。 在任何常見的語言中,只要這種語言能處理字符串,就應(yīng)該包含正則表達(dá)式。 所謂的正則表達(dá)式,就是通過一段規(guī)則表達(dá)一段文本。 下列為一個完整的元字符列表: . ^ $ * + ? { } [ ] \ | ( ) 上列字符不會和它們本身相匹配,如果想匹配自身,就需要在元字符前加/。 元字符簡略介紹 * :匹配前面的子表達(dá)式零次或多次。 + :匹配前面的子表達(dá)式一次或多次。 ? :匹配前面的子表達(dá)式零次或一次。 : 匹配確定的 n 次。 : 至少匹配n 次。 : 最少匹配 n 次且最多匹配 m 次。 *、+限定符都是貪婪的,因?yàn)樗鼈儠M可能多的匹配文字,只有在它們的后面加上一個?就可以實(shí)現(xiàn)非貪婪或最小匹配。 ^ : 匹配輸入字符串的開始位置。 $ : 匹配輸入字符串的結(jié)束位置。 不能將限定符與定位符一起使用。 [xyz] : 字符集合。匹配所包含的任意一個字符。 [^xyz] : 負(fù)值字符集合。匹配未包含的任意字符。 [a-z] : 字符范圍。匹配指定范圍內(nèi)的任意字符。 [^a-z] : 負(fù)值字符范圍。匹配任何不在指定范圍內(nèi)的任意字符。 x|y : 匹配 x 或 y。 (pattern) : 匹配 pattern 并獲取這一匹配。 (?:pattern) : 匹配 pattern 但不獲取匹配結(jié)果。 (?=pattern) : 正向肯定預(yù)查。 (?!pattern) : 正向否定預(yù)查。 圓括號會使匹配會被緩存,非捕獲元(?: ?= ?!)可以消除這個效果。 \d : 匹配十進(jìn)制數(shù)。 \s : 匹配空白字符。 \w : 匹配字母數(shù)字。 \b : 匹配一個單詞邊界。 當(dāng)以上四個字母大寫時,代表著取反。 簡單實(shí)例 /[a-z]/ : a至z共26個字母再。 /^\s*$/ : 匹配空行。 /\d-\d/ : 驗(yàn)證由三位數(shù)字、一個連字符再加四位數(shù)字。 https?://.*? : 匹配http或https開頭的網(wǎng)址。 我們可以通過正則表達(dá)式從長文本中提取出匹配模式的文本,或者判斷文本是否合取某種規(guī)則。 它在表單驗(yàn)證(如驗(yàn)證手機(jī)號,郵箱等),爬蟲,數(shù)據(jù)清洗等方面都有比較重要的作用,所以學(xué)習(xí)使用還是非常有必要的。 |
|