二、正则表达式操作
正則表達式操作
- 匹配字符串
- 使用match()方法進行匹配
- 使用search()方法進行匹配
- 使用findall()方法進行匹配
- 替換字符串
- 分割字符串
python提供了re模塊,用于實現正則表達式的操作。在實現時,可以用re模塊提供的方法進行字符串處理,也可以先使用re模塊compile()方法將模式字符串轉換為正則表達式對象,然后再用該正則表達式對象的相關方法來操作字符串。
匹配字符串
使用match()方法進行匹配
match()方法用于從字符串的開始處進行匹配,如果在起始位置匹配成功,則返回match()對象,否則返回None。
語法格式如下:
| pattern | 匹配的正則表達式 |
| string | 要匹配的字符串。 |
| flags | 標志位,可選參數,用于控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。 |
可選標志
例如:
group()用法詳見
https://www.cnblogs.com/erichuo/p/7909180.html
執行結果如下:
<_sre.SRE_Match object; span=(0, 7), match='TB_SHOP'> 匹配值的起始位置: 0 匹配值的結束位置: 7 匹配位置的元組: (0, 7) 要匹配的字符串: TB_SHOP tb_shop 匹配數據: TB_SHOP None使用search()方法進行匹配
search()方法用于在整個字符串搜索第一個匹配的值,如果匹配成功,則返回match()對象,否則返回None。
語法格式如下:
例如:
import re pattern=r'tb_\w+' string='TB_SHOP tb_shop' match=re.search(pattern,string,re.I) # 匹配出TB_SHOP這七個字符 print(match)string='商店名稱TB_SHOP tb_shop' match=re.search(pattern,string1,re.I) # 當第一個字母不符合條件時則不再進行匹配,直接返回None print(match)執行結果如下:
<_sre.SRE_Match object; span=(0, 7), match='TB_SHOP'> <_sre.SRE_Match object; span=(4, 11), match='TB_SHOP'>使用findall()方法進行匹配
findall()方法用于在整個字符串搜索所有符合正則表達式的字符串,并以列表形式返回。如果匹配成功,則返回包含匹配結構的列表,否則返回空列表。
語法格式如下:
例如:
import re pattern=r'tb_\w+' string='TB_SHOP tb_shop' match=re.findall(pattern,string,re.I)# 區分大小寫 # 匹配出TB_SHOP這七個字符 print(match)string='商店名稱TB_SHOP tb_shop' match=re.findall(pattern,string1)# 不區分大小寫 # 當第一個字母不符合條件時則不再進行匹配,直接返回None print(match)執行結果如下:
['TB_SHOP', 'tb_shop'] ['tb_shop']替換字符串
sub方法用于實現字符串的替換
subn()方法幾乎與sub()一樣,但是會返回一個替換的次數
語法格式如下:
pattern : 正則中的模式字符串。
repl : 替換的字符串,也可為一個函數。
string : 要被查找替換的原始字符串。
count : 可選參數,模式匹配后替換的最大次數,默認 0 表示 替換所有的匹配。
flags:可選參數,標志位,用于控制匹配方式
例如:
import re pattern=r'1[34578]\d{9}' string='中獎號碼為787087876,聯系電話為:13866666666' result=re.sub(pattern,'138****6666',string) print(result)執行結果如下:
中獎號碼為787087876,聯系電話為:138****6666分割字符串
split()方法用于實現正則表達式分割字符串,并以列表的形式返回。其作用同字符串對象的·split()方法類似,所不同的就是其分割字符由模式字符串指定。
語法格式如下:
maxsplit:分隔次數,maxsplit=1 分隔一次,默認為 0,不限制次數。
例如:
import re str1='@你們 @我們 @他們' pattern=r'\s*@' list1=re.split(pattern,str1)# 用空格和@或者單獨的@分割字符串 print('分割后的字符串為:') for i in list1:print(i)執行結果如下:
分割后的字符串為:你們 我們 他們總結
- 上一篇: win10向VMware中的win7传文
- 下一篇: 乖离率背离公式_乖离率BIAS操盘口诀: