正则表达式

一、正则表达式概念

  正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

二、常用的re方法

  

#导入正则模块包
import re

#re.findall方法:在字符串中找到正则表达式所匹配的所有字符串,并返回一个列表,如果没有匹配的,则返回空列表
#从compile()函数的定义中,可以看出返回的是一个匹配对象,它单独使用就没有任何意义,需要和findall(), search(), match()搭配使用。
a = '123abc445bcdi8dh8j'
#一下两行代码也可以进行匹配,使用compile函数生成一个匹配规则对象。
# yan = re.compile('[a-zA-z]+')
# b = yan.findall(a)
b= re.findall(r'[a-zA-z]+',a)
print(b)
['abc', 'bcdi', 'dh', 'j']
#re.serch方法:扫面整个字符串,匹配成功就返回一个对象,就不再往下找了。
import re
a = '123abc445bcdi8dh8j'
b = re.search('bc',a)
print(b)
#通过group()查看匹配的内容,span()查看匹配的内容的下标
print(b.group())
print(b.span())
<re.Match object; span=(0, 3), match='123'>
None
#re.match方法:只从开始位置的字符串进行匹配,匹配成功就返回一个匹配对象;如果不是起始字符串匹配成功,就返回为空
import re
a = '123abc445bcdi8dh8j'
b = re.match('123',a)
print(b)
c = re.match('8dh',a)
print(c)
<re.Match object; span=(4, 6), match='bc'>
bc
(4, 6)
#re.split分割:通过定义的分割规则进行字符串分割
#d+:匹配数字,0—9;W+:匹配非单词向量
import re
str1 = 'one1two2tree3four4fine'
str2 = 'one,two,tree,four,fine'
str3 = re.split('d+',str1)
str4 = re.split('W+',str2)
print(str3)
print(str4)
['one', 'two', 'tree', 'four', 'fine']
['one', 'two', 'tree', 'four', 'fine']
#re.sub()替换字符串中每一个匹配的自串后返回新的字符串
str1 = 'one1two2tree3four4fine'
print(re.sub('d','-',str1))
one-two-tree-four-fine
#re.finditer:引用分组
import re 
str = 'hello 123,word 321'
pattern = re.compile('w+ d+')
#print(pattern.finditer(str))    返回一个对象
for i in pattern.finditer(str):
#group(0)返回一个完整的字符串内容
    print(i.group(0))
    
pattern1 = re.compile('(w+) (d+)')
for i in pattern1.finditer(str):
    print(i.group(0))
    print(i.group(1))
    print(i.group(2))
hello 123
word 321
hello 123
hello
123
word 321
word
321
#匹配中文字符
import re
str = '帅哥 123,美女 321'
pattern = re.compile('[u4e00-u9fa5]+')
print(pattern.findall(str))
['帅哥', '美女']
如有问题请留言,谢谢!
原文地址:https://www.cnblogs.com/yunsi/p/11133169.html