一 正規表示式基礎

2021-10-05 21:30:36 字數 1637 閱讀 3312

正規表示式是一種用來匹配字串的強有力的**。設計思想是用一種描述性的語言來給字串定義乙個規則,凡是符合規則的字串,就認為它「匹配」,否則就不匹配。

行定位符用來描述字串的邊界。^表示行的開始,$表示行的結束。

例如:若要匹配以am開頭的字串,則是^am

若要匹配以am結尾的字串,則是am$

其中^放在方括號裡,表示排除字元

例如:[^a-za-z]用於匹配乙個不是字母的字元

匹配除換行符(\n)以外的任意字元

匹配字母、數字、下劃線或漢字

匹配除字母、數字、下劃線或漢字以外的字元

匹配單個空白符(包括\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 之後的位置。匹配輸入字串的結束位置。...