在python中使用正则表达式:
转义符:\
re模块:
import re
1.findall :返回所有满足匹配条件的结果,放在列表里,如果没救就返回空列表,在分组中会优先显示分组中的内容,想要取消优先分组可以(?:正则表达式)
ret = re.findall("\d","axd4515d4f")
print(ret)
2.search :找到第一个符合要求的字符串,然后返回一个包含匹配信息的对象,可以通过goup()方法得到匹配的字符串,如果没有就返回None. re.match()和search一样,只是在第一位没找到时就会报错
如果search中有分组的话,通过group(n)就能拿到group中的匹配内容
ret = re.search("a","eva egon yuan")
print(ret.group())#结果"a"
3.split :对字符串进行分割,遇到分组会将分组内被切掉的内容保留.
ret = re.split("[ab]","abcd")#先以"a"分割得到" "和"bcd",然后以b分割得到[" "," ","cd"]
4.sub :替换,相当于replace.
ret = re.sub("\d","H","eva3erdgs4yuan4",1)#表示将数字换成H,后面的参数表示只替换一次.
5.subn :返回的是元组(替换的结果,替换的次数)
6.compile :将正则表达式编译成一个正则表达式对象,方便后面程序调用.
rs = re.compile("正则表达式")
ret = rs.findall("字符串")
7.finditer :返回一个存放匹配结果的迭代器.
ret = re.finditer("\d","ds3sy4784a")
for i in ret:
print(i.goup())
匹配标签:
1 import re 2 3 4 ret = re.search("<(?P<tag_name>\w+)>\w+</(?P=tag_name)>","<h1>hello</h1>") 5 #还可以在分组中利用?<name>的形式给分组起名字 6 #获取的匹配结果可以直接用group('名字')拿到对应的值 7 print(ret.group('tag_name')) #结果 :h1 8 print(ret.group()) #结果 :<h1>hello</h1> 9 10 ret = re.search(r"<(\w+)>\w+</\1>","<h1>hello</h1>") 11 #如果不给组起名字,也可以用\序号来找到对应的组,表示要找的内容和前面的组内容一致 12 #获取的匹配结果可以直接用group(序号)拿到对应的值 13 print(ret.group(1)) 14 print(ret.group()) #结果 :<h1>hello</h1>
数字匹配:
1、 匹配一段文本中的每行的邮箱 http://blog.csdn.net/make164492212/article/details/51656638 2、 匹配一段文本中的每行的时间字符串,比如:‘1990-07-12’; 分别取出1年的12个月(^(0?[1-9]|1[0-2])$)、 一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 3、 匹配qq号。(腾讯QQ号从10000开始) [1,9][0,9]{4,} 4、 匹配一个浮点数。 ^(-?\d+)(\.\d+)?$ 或者 -?\d+\.?\d* 5、 匹配汉字。 ^[\u4e00-\u9fa5]{0,}$ 6、 匹配出所有整数