python :re模块基本用法
re.match函數
re.match 嘗試從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。
函數語法:
re.match(pattern, string, flags=0)
結果:
re.search()
re.search()方法掃描整個字符串,并返回第一個成功的匹配。如果匹配失敗,則返回None。
與re.match()方法不同,re.match()方法要求必須從字符串的開頭進行匹配,如果字符串的開頭不匹配,整個匹配就失敗了;
re.search()并不要求必須從字符串的開頭進行匹配,也就是說,正則表達式可以是字符串的一部分。
import re print(re.search("com", "www.runoob.com") ) print(re.match("com", "www.runoob.com"))結果:
re.findall的用法
在import re中,(re.findall(pattern, string, flags=0)):返回string中所有與pattern相匹配的全部字符串,得到數組
re.sub
替換字符串中的某些子串,可以用正則表達式來匹配被選子串。
re.sub(pattern, repl, string, count=0, flags=0)
pattern:表示正則表達式中的模式字符串;
repl:被替換的字符串(既可以是字符串,也可以是函數);
string:要被處理的,要被替換的字符串;
count:匹配的次數, 默認是全部替換
import re st = "hello 2019" st = re.sub("([0-9]+)","yudengwu",st) print(st)結果
re.replace
替代字符串中的某一些子串為另一些字符。 str.replace(old, new[, max])
old – 將被替換的子字符串。
new – 新字符串,用于替換old子字符串。
max – 可選字符串, 替換不超過 max 次
re.group()
group() 同group(0)就是匹配正則表達式整體結果
group(1) 列出第一個括號匹配部分,
group(2) 列出第二個括號匹配部分,
group(3) 列出第三個括號匹配部分。
沒有匹配成功的,re.search()返回None
group() 同group(0)就是匹配正則表達式整體結果
group(1) 列出第一個括號匹配部分,
group(2) 列出第二個括號匹配部分,
group(3) 列出第三個括號匹配部分。
沒有匹配成功的,re.search()返回None
當然鄭則表達式中沒有括號,group(1)肯定不對了。
元字符
\d 匹配任何十進制數;它相當于類 [0-9]。
\D 匹配任何非數字字符;它相當于類 [^0-9]。
\s 匹配任何空白字符;它相當于類 [ fv]。
\S 匹配任何非空白字符;它相當于類 [^ fv]。
\w 匹配任何字母數字字符;它相當于類 [a-zA-Z0-9_]。
\W 匹配任何非字母數字字符;它相當于類 [^a-zA-Z0-9_]。
元字符[^]. 你可以用補集來匹配不在區間范圍內的字符。其做法是把"“作為類別的首個字符;其它地方的”"只會簡單匹配 “"字符本身。例如,[5] 將匹配除 “5” 之外的任意字符。同時
元字符 ^ 表示匹配字符串的開始,如”^ab+"表示以ab開頭的字符串。
元字符(),元字符backslash。做為 Python 中的字符串字母,反斜杠后面可以加不同的字符以表示不同特殊意義。
元字符($),匹配字符串的結尾或者字符串結尾的換行之前。
元字符(*),匹配0個或多個
元字符(?),匹配一個或者0個
元字符(+), 匹配一個或者多個
元字符(|), 表示"或",如A|B,其中A,B為正則表達式,表示匹配A或者B
元字符({})
元字符“.”在默認模式下,匹配除換行符外的所有字符。在DOTALL模式下,匹配所有字符,包括換行符。
元字符( “( )” ),用來表示一個group的開始和結束。
\u4e00-\u9fa5 匹配任何中文 如[\u4e00-\u9fa5]{2,5} 表示匹配任意中文2到5個字
書籍 《Python自然語言處理實戰 》正則例子
import retext_string = '因此從某種意義上來說除了部分頂層高收入人群確實屬于實際意義上的富豪以外,其他人在收入上確實普遍不高。就比如你名下資產100萬。然而僅僅是房子就占了99萬,那你也只不過屬于萬元戶而已。因為房子是用來住的,值多少錢對我們擁有一套房的人來說意義不大!' regex = '意義' p_string = text_string.split('。') # 以句號為分隔符通過split切分 for line in p_string:if re.search(regex, line) is not None: # search方法是用來查找匹配當前行是否匹配這個regex,返回的是一個match對象print(line) print()# 例二:匹配任意一個字符 # 用 . 來匹配任意一個字符,即代替任何單個字符(換行符除外) import retext_string = '因此從某種意義上來說除了部分頂層高收入人群確實屬于實際意義上的富豪以外。其他人在收入上確實普遍不高,就比如你名下資產100萬。然而僅僅是房子就占了99萬。那你也只不過屬于萬元戶而已。因為房子是用來住的,值多少錢對我們擁有一套房的人來說意義不大。' regex = '..萬' p_string = text_string.split('。') for line in p_string:if re.search(regex, line) is not None:print(line) print()# 例3:匹配開始和結尾字符串 # 字符 ^ 匹配開始字符串;字符 $ 匹配結尾字符串 import retext_string = '文本最重要的來源無疑是網絡。我們要把網絡中的文本獲取形成一個文本數據庫。利用一個爬蟲抓取到網絡中的信息。' \'爬取的策略有廣度爬取和深度爬取。根據用戶的需求,爬取可以有主題爬取和通用爬蟲之分。' # regex = '^文本' regex = '信息$' p_string = text_string.split('。') for line in p_string:if re.search(regex, line) is not None:print(line) print()# 例4:使用中括號匹配多個字符串 # 字符 [] 匹配多個字符串 import retext_string = '[重要的]今年的第七號臺風23日登陸廣東沿海地區。上海發布暴雨藍色預警。[緊要的]中國對印度連發強硬信息,印度急切需要結束對峙' regex = '^\[[重緊]..\]' p_string = text_string.split('。') for line in p_string:if re.search(regex, line) is not None:print(line)else:print('not match') print()# 使用轉義字符: import reif re.search(r'\\', 'I have one nee\dle') is not None:print('match it') else:print('not match') print()# 抽取文本中的數字 # [0-9]代表從0-9的數字 [a-z]代表沖a-z所有的小寫字母 import reyear_string = [] strings = ['war of 1812', 'there are 5280 feet to a mile', 'happy new year 2016'] for string in strings:if re.search('[1-2][0-9]{3}', string): # 即匹配從1000-2999之間的數字 {3}即重復之前的[0-9]3次year_string.append(string) print(year_string) print() 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的python :re模块基本用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 觉得的觉怎么读,觉得的觉怎么读
- 下一篇: python文本时间提取