1.点(.)匹配除换行以外的任意单个字符
比如从下述文本中找出所有的颜色
苹果是绿色的
橙子是橙色的
香蕉是黄色的
乌鸦是黑色的
实现:
import re
text='''
苹果是绿色的
橙子是橙色的
香蕉是黄色的
乌鸦是黑色的
'''
p=re.compile(r'.色') #compile是将字符串实现成patterr模式
for one in p.findall(text): #找到所有符合条件的类型
print(one)
2. 星号-重复匹配任意次
*---表示匹配前面的子表达式任意次,包括0次
比如,从下面文本中选择每行逗号后面的字符串内容,包括逗号本身。
---采用 ,.*
实现:
text='''
苹果,是绿色的
橙子,是橙色的
香蕉,是黄色的
乌鸦,是黑色的
'''
p=re.compile(r',.*') #compile是将字符串实现成patterr模式
for one in p.findall(text): #找到所有符合条件的类型
print(one)
3.加号---重复匹配多次
+---表示匹配前面的子表达式一次或多次,不包括一次
比如,从下面文本中选择每行逗号后面的字符串内容
实现:
text='''
苹果,是绿色的
橙子,是橙色的
香蕉,是黄色的
乌鸦,是黑色的
猴子,
'''
p=re.compile(r',.+') #compile是将字符串实现成patterr模式
for one in p.findall(text): #找到所有符合条件的类型
print(one)
4.花括号---匹配指定次数
{}-----花括号表示前面的字符匹配指定的次数
比如,下面文本
text='''
红彤彤,绿油油,黑乎乎,黑乎乎乎乎
'''
表达式 呼{3,4}---表示匹配连续的乎字至少3次,至多4次
texts='''
红彤彤
绿油油
黑乎乎
黑乎乎乎乎
'''
pp=re.compile(r'.+乎{2,4}')
for onee in pp.findall(texts):
print(onee)
5. 反斜杠(\)----表示位于\之后的为转义字符
比如,我们要再下面的文本中搜索所有点前面的字符串,也包括点本身
苹果.是绿色的
橙子.是橙色的
香蕉.是黄色的
从前面的点和*的学习来做,及.*.--------这样做对吗????
原因在于,我们搜索的字符本身就包含了元字符,这样则会出错
这里采用反斜杠(\)来表示:.*\.
程序如下:
text1='''
苹果.是绿色的
橙子.是橙色的
香蕉.是黄色的
'''
p1=re.compile(r'.*\.')
for one1 in p1.findall(text1):
print(one1)
输出结果:
苹果.
橙子.
香蕉.
6. \w---匹配任何字母---不管中文、英文、还是下划线
比如:取一串数字中的所有字符如,张三,tory,李四
程序如下:
soure='''
张三,tory,李四
'''
p2=re.compile(r'\w{1,4}')
print(p2.findall(soure))
输出结果:
['张三', 'tory', '李四']
思考:如何自取英文字符‘tory’??
7.中括号[]---匹配位于[]中的任意一个字符
如采用方括号读取有效电话好号码:
张三,13516342568,11
李四,1b36548952,12 王五,13116542659
程序:
value1='''
张三,13516342568,11
李四,1b36548952,12
王五,13116542659
'''
p3=re.compile(r'1[3]\d{9}')
print(p3.findall(value1))
输出结果:
['13516342568', '13116542659']
8. 起始位置(^)-----表示匹配文本的起始位置
如果是多行模式,表示匹配文本每行的开头位置
比如,你需要从下面的文本中,选择每行逗号前面的字符串,也包括逗号本身。
苹果,苹果是绿色的
橙子,橙子是橙色的
香蕉,香蕉是黄色的
---采用正则表达式^.*,
程序:
value2='''
苹果,苹果是绿色的
橙子,橙子是橙色的
香蕉,香蕉是黄色的
'''
p4=re.compile(r'^.*,',re.MULTILINE)
print(p4.findall(value2))
输出结果:
['苹果,', '橙子,', '香蕉,']
9.括号---组选择
括号称之为 正则表达式的组选择。是从正则表达式匹配的内容分里面扣取除其中的某些部分
前面,我们有个例子,从下面的文本中,选择每行逗号前面的字符串,也包括逗号本身。
苹果,苹果是绿色的
橙子,橙子是橙色的
香蕉,香蕉是黄色的
现要求不需要包括逗号----则不能写成^.*,
在这里逗号是特征所在,如果去掉它,就没法找逗号前面的了
因此,选择适用组选择符:括号
写成----^(.*),