編程語言中的正則表達式用于描述搜索模式的特殊文本字符串。這對于從文本(如代碼、日志、文檔、電子表格等)中提取信息非常有用。使用正則表達式時,首先要認識到的是,所有內容本質上都是一個字符。ASCII或拉丁字母是鍵盤上的字母,Unicode用于匹配外來文本,它包括數字和標點符號以及所有特殊字符,如$、#、@、!、%等。
例如,正則表達式可以告訴程序從字符串中搜索特定文本,然后相應地打印出結果。正則表達式可以包括文字匹配、重復、分支、模式組成等。
在Python中,正則表達式通過re模塊導入。元字符是具有特殊含義的字符,用來匹配特定文本。常用的元字符如表所示。
re模塊中定義了一些函數,分別對應不同的匹配模式。
findall()函數用于返回包含所有匹配項的字符串列表:
- >>> import re # 導入re模塊,以下示例都將省略這行代碼
- >>> s = 'hello 12 hi 89. How 34'
- >>> pattern = '\d+' # 匹配數字
- >>> result = re.findall(pattern, s)
- >>> print(result)
- ['12', '89', '34']
split()函數用于在存在匹配項的情況下拆分字符串,并返回發(fā)生拆分的字符串列表:
- >>> s = 'python:234, java 90' # 將數字作為分隔符
- >>> pattern = '\d+'
- >>> result = re.split(pattern, s)
- >>> print(result)
- ['python:', ', java ', '']
如果不存在匹配項,那么split()函數返回一個包含空字符串的列表?梢詫axsplit參數傳遞給split()函數,maxsplit代表最大拆分次數:
- >>> s = 'python:234, java 90'
- >>> pattern = '\d+'
- >>> result = re.split(pattern, s, 1) # 分割最大值是1,即拆成兩份
- >>> print(result)
- ['python:', ', java 90']
sub()函數用于返回一個字符串,其中匹配到的匹配項被替換變量的內容替換:
- >>> s = 'abc 12\
- ... de 23 \n f45 6'
- >>> pattern = '\s+' # 匹配空白字符
- >>> replace = '' # 用空字符串替換匹配項
- >>> new_string = re.sub(pattern, replace, s)
- >>> print(new_string) # 完成替換
- abc12de23f456
如果不存在匹配項,那么sub()函數返回原始字符串。
subn()函數與sub()函數類似,只不過subn()函數返回一個包含2個項的元組,其中包含新字符串和進行替換的次數:
- >>> s = 'abc 12\
- ... de 23 \n f45 6'
- >>> pattern = '\s+'
- >>> replace = ''
- >>> new_string = re.subn(pattern, replace, s)
- >>> print(new_string)
- ('abc12de23f456', 4)
search()函數采用兩個參數,分別是匹配模式和字符串。該函數查找正則表達式模式與字符串匹配的第一個位置。如果匹配成功,那么search()函數返回一個match對象;否則返回None:
- >>> s = 'Python is fun'
- >>> match = re.search('\APython', s) # 檢查'Python'是否在開頭
- >>> print(match) # 返回一個對象
- <_sre.SRE_Match object; span=(0, 6), match='Python'>
上面的match變量包含著match對象,match對象的re屬性返回一個正則表達式對象,string屬性返回傳遞的字符串:
- >>> match.re
- re.compile('\\APython')
- >>> match.string
- 'Python is fun'
更多內容
>>本文地址:http://www.yiyunku.cn/zhuanye/2021/70621.html
聲明:本站稿件版權均屬中公教育優(yōu)就業(yè)所有,未經許可不得擅自轉載。
1 您的年齡
2 您的學歷
3 您更想做哪個方向的工作?