正規表示式是一種用來匹配字串的強有力的**。設計思想是用一種描述性的語言來給字串定義乙個規則,凡是符合規則的字串,就認為它「匹配」,否則就不匹配。
行定位符用來描述字串的邊界。^表示行的開始,$表示行的結束。
例如:若要匹配以am開頭的字串,則是^am
若要匹配以am結尾的字串,則是am$
其中^放在方括號裡,表示排除字元匹配除換行符(\n)以外的任意字元例如:[^a-za-z]用於匹配乙個不是字母的字元
匹配字母、數字、下劃線或漢字
匹配除字母、數字、下劃線或漢字以外的字元
匹配單個空白符(包括\n和\t)
匹配除單個空白符(包括\n和\t)以外的字元
匹配數字
匹配非數字的字元
匹配單詞的開始或結束,單詞的分界符通常是空格,標點符號或者換行。但是\b並不匹配這些單詞分隔字元中的任何乙個,它只匹配乙個位置。\b 匹配這樣的位置:它的前乙個字元和後乙個字元不全是(乙個是,乙個不是或不存在) \w。
有關\b可詳見:匹配前面的字元零次或一次
匹配前面的字元零次或多次
匹配前面的字元一次或多次
匹配前面的字元n次
匹配前面的字元至少n次
匹配前面的字元最少n次,最多m次
如果要匹配未預定義的元字元集合,只需要在方括號裡列出它們就可以了
例如:[aeiou]:匹配任意乙個英文母音字母
[0-9]:匹配一位數字,與\d代表含義完全一致
[\u4e00-\u9fa5]:匹配字串中任意乙個漢字
以身份證號碼規則為例:
身份證號碼長度為15位或為18位,如果為15位時,則全為數字,如果18位時,前17位為數字,最後一位是校驗碼可能為數字或者為字元x。該描述中包含條件選擇的邏輯,需要選擇字元 | (或)實現。可用如下表示式匹配:
(^\d$)|(^\d$)|(^\d)(\d|x|x)$
[1-9]\.[0-9]\.[0-9]\.[0-9]小括號()作用:
1.可以改變限定符的作用範圍
2.分組
例如:(\.[0-9])就是對(\.[0-9])進行重複操作。
python中使用正規表示式時,是將其作為模式字串使用的。
例如:將匹配不是字母的乙個字元的正規表示式表示為模式字串,可使用如下**:
『[^a-za-z]』如果將匹配以字母m開頭的單詞的正規表示式轉換為模式字串,則不能直接在其兩側新增引號定界符:
『\bm\w*\b』
而是需要將其中的 \ 進行轉義,轉換後的結果為:
『\\bm\\w*\\b』由於模式字串中可能包含大量的特殊字元和反斜槓,所以需要寫成原生字串,即在模式字串前面加上r或r,將上述模式字串轉換為原生字串可表示為:
r』\bm\w*\b』
Python爬蟲(一) 正規表示式基礎
這塊內容並沒有詳細的正規表示式內容,作者知識儲備不足是其一,專案中用不上是其二。基本示例import re 引入re正規表示式庫 matching rule re.compile asd 定義正規表示式規則 search result matching rule.findall asd,asdasd...
java基礎(十一) 正規表示式
本文在閱讀一位大牛博主寫的一篇文章後,感覺深受其用,在此做個筆記總結學習一下,大牛博主位址為 在編寫處理字串的程式或網頁時,經常會有查詢符合某些複雜規則的字串的需要。正規表示式就是用於描述這些規則的工具。換句話說,正規表示式就是記錄文字規則的 入門例子 例子1 假設你在一篇英文 裡查詢hi,你可以使...
mysql學習(一)正規表示式
mysql可以通過 like 來進行模糊匹配 mysql 同樣也支援其他正規表示式的匹配,mysql中使用 regexp 操作符來進行正規表示式匹配 模式描述 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束位置。...