正規表示式之關鍵內容(三)

2021-09-27 02:56:55 字數 1739 閱讀 1926

目錄

貪婪與非貪婪

修飾符 

轉義匹配(\)

compile()

貪婪匹配:.*  會匹配盡可能多的字元

非貪婪匹配:.*?會匹配盡可能少的字元

import re

content = 'hello 1234567 world_this is a regex demo'

result = re.match('^hel.*(\d+).*',content)

result1 = re.match('^hel.*(\d+).*?',content)

result2 = re.match('^hel.*?(\d+).*',content)

result3 = re.match('^hel.*?(\d+).*?',content)

print(result.group(1))

print(result1.group(1))

print(result2.group(1))

print(result3.group(1))

執行結果

**解釋:

正規表示式中.*後面是\d+,也就是至少乙個數字,並沒有指定具體數字,因此.*就盡可能匹配多的字元,這裡就把123456匹配掉了。而使用.*?就會保留123456,盡可能少的匹配字元,沒有匹配掉123456。

修飾符描述

re.i

使匹配對大小寫不敏感

re.l

做本地化識別匹配

re.m

多行匹配,影響^和$

re.s

使.匹配包括換行在內的所有字元

re.u

根據unicode字符集解析字元。這個標準影響\w,\w,\b,\b

re.x

該標誌通過給予你更靈活的格式以便你將正規表示式寫得更容易理解

在網頁中較為常用的是re.s,re.i

import re

print(result)

執行結果

sub()

修改文字,替換文字(與replace相似)

import re

content = '4ak54yr5oir54ixl2'

content = re.sub('\d+','',content)

print(content)

執行結果

定義:將正則字串編譯成正規表示式物件,

以便在後面的匹配中復用。

import re

content1 = '2016-12-15 10:00'

content2 = '2016-11-14 12:50'

content3 = '2016-10-11 11:40'

pattern = re.compile('\d:\d')

result1 = re.sub(pattern,'',content1)

result2 = re.sub(pattern,'',content2)

result3 = re.sub(pattern,'',content3)

print(result1,result2,result3)

執行結果

正規表示式相關 正規表示式處理html內容

前面關於顯示html文字用了瀏覽器控制項來處理 這個不過是為了解決燃眉之急不得已才使用。其實最好還是使用正規表示式處理,也就是自己寫乙個html文字直譯器,當然這個實現起來也是不容易的,首先你得將所有html文字標籤羅列出來,然後一一翻譯。下面先搞乙個簡單的例子吧。public static str...

正規表示式基礎內容

1 通用原子 2 元字元 必須以它開頭。必須以它結尾。恰巧出現 n 次。大於等於 n 次。大於等於 n,小於等於 m.匹配中括號中的任意乙個字元 是乙個集合 如 abc 即為匹配a或b或者c。後項引用 或者是當做乙個整體。取反。或者 代表乙個範圍,如 0 9 匹配即為 0123456789 3 模式...

正規表示式內容梳理

正規表示式是乙個描述字元模式的物件,在js中,regexp表示正則物件。正則的功能十分強大,可以大幅度簡化 正澤德功能可以匹配檢索大批量資料。切使用範圍非常廣泛 script var rel abc 建立乙個正規表示式給變數 var rel2 new regexp abc 構建函式創造正則 構建函式...