本文旨在通过一些简单的例子来使读者入门正则表达式。
题目1:如何在一串字符中‘www.baidu.com’找到字符‘www’在字符串中的位置?
import re
print(re.match('www', 'www.runoob.com',re.I).span())
# 'www'代表我要查询的字符,
# 'www.runoob.com'代表我要检索的字符库,
# .span是一个属性,一个输出查询字符的位置的属性
# 这个位置放的是在匹配过程中的一些属性,此处re.I 是指在匹配的过程中忽略大小写
题目2:在一串字符中‘www.baidu.com’找到字符‘baidu’在字符串中的位置?
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None
re.search匹配整个字符串,直到找到一个匹配。
import re
print(re.search('runo', 'www.runoob.com').span())
题目3:如何在aabab找到a开头b结尾的字符的所在的位置?
# .表示任意一个字符,*代表多次,.*代表多个不一定相同的字符 ?代表尽可能少得重复
#a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab和ab。
# 如果不加问号的话,程序会尽可能多的重复
lines='ababab'
ob = re.search('.*',lines,re.I).span()
print(ob)
题目4:如何将要查找的数据模块化,例如分别和一起查找‘aa‘‘bb’‘cc’所在的位置?
l = 'ccaabbccababccbad'
result = re.search('(aa)(bb)(cc)',l,re.I)
print(result.group())
>>'aabbcc'
print(result.group(0))
>>'aa'
print(result.group(1))
>>'bb'
print(result.group(2).span())
>>AttributeError: 'str' object has no attribute 'span'
题目5:例如此处有一个电话号码15106927906,我想把0后边的元素都提取出来并删除,怎么做到?
l = '15106927906'
result = re.search('0.*$',l,re.I)
print(result)
>> <re.Match object; span=(3, 11), match='06927906'>
print(result.group())
>> 06927906
# $这个符号代表的是字符串的最后一个字符
l = '15106927906'
del_result = re.sub('0.','',l,re.I)
print(del_result)
>>1519279
题目6:写一个python程序,利用正则表达式,提去一个html页面中的所有超链接,去除html中的标签原始,生成一个文本文件!
import re
f = open('test.txt')
str = f.read()
fp = open('test_new.txt','w')
del_result = re.finditer('"(http|ftp)s?://.*?"',str)
for match in del_result:
fp.write(match.group())
fp.write('\n')
#其中,test.txt内存储的是需要处理的源代码,test_new.txt是处理后的新文件。
在正则表达式中,还有很多很多需要掌握的知识,这篇文章是为了一点都不懂的小白尽快入门使用的,俗话说,师傅领进门,修行在个人,我不可能把所有的知识点都做成一个题目,但是懂了这些题目之后,自己就可以在网上用现有的资源继续学习了,毕竟程序员第一法则:不重复造轮子!