day15-正则表达式
1、什么是正则表达式
string.find(‘metch’)
[email protected]
[email protected]
[email protected]
英文:regular expression 正则表达式
字符串的查找只能查找特定的字符串
正则表达式可以用来查找一类字符串
学习:写正则表达式,里面的每一个规则
不同的需求,写出来的正则表达式不一样,所以,不要尝试着读懂别人的正则
世界上三大读不懂的东西
医生的处方、道士的符、程序猿的正则表达式
2、使用场景
匹配邮箱,匹配url
http://www.baidu.com:80/index.html?username=goudan&password=123456&abc=123
爬虫,提取指定内容,通过正则
nginx:服务器,配置文件,通过正则匹配
3、使用原则
能不使用正则尽量不要使用正则
4、基本使用
re模块(官方模块)
match(正则表达式, 字符串)
[注]只能从字符串最开头查找,如果查找成功,返回一个对象,如果查找失败,返回None
search(正则表达式, 字符串)
从字符串任意位置开始找,找到停止,找不到返回None
返回一个对象
findall(正则表达式, 字符串)
从字符串中查找到所有的符合正则表达式的字符串,返回一个列表
compile(正则表达式)
根据正则表达式构建一个正则对象,然后通过正则对象调用match\search\findall
group
ret.group() 查看匹配内容
ret.span() 返回匹配内容的位置
正则表达式规则学习
单字符匹配
所有的字符串都是单字符,但是有一些特殊的单字符,可以匹配一类字符
. 匹配除了换行(\n)以外所有的字符
\d (digit)匹配所有的数字字符
\D 匹配所有的非数字字符
\w (word)匹配所有的数字、字母、下划线、中文
\W 匹配所有的非 \w
\s (space)匹配所有的空白字符 空格、\n、\t、tab键
\S 匹配所有的非 \s
[] 匹配中括号里面任意一个字符
[aeiou\d]
[0-9] == \d
[a-z]
[A-Z]
[a-zA-Z]
[a-zA-Z0-9_] == \w
#测试案例
# string = 'hello baby, i love you love very much'
fp = open('day15.txt', 'r', encoding='utf-8')
string = fp.read()
index = string.find('search')
print(index)
'''
#import re
#ret = re.match('恋爱', '恋爱是一种非常美妙的感觉')
#print(ret)
#import re
#ret = re.match('恋爱', '恋爱是一种非常美妙的感觉')
#print(ret.group()) #输出结果为恋爱
#import re
#ret = re.search('坐火车', '我爸说,坐火车是一种美妙的感觉,我喜欢坐火车,但是,我第一次坐火车的时候吐了')
#ret = re.findall('坐火车', '我爸说,坐火车是一种非常美妙的感觉,所以我喜欢坐火车,但是,我第一次坐火车的时候吐了')
#print(ret)
import re
pattern = re.compile('love') # 构建一个正则对象
ret = pattern.findall('晕车是一种非常美妙的感觉,想自杀的感觉,我现在不晕车了')
print(ret)
'''
string = '知道不知道呢,伙计们'
index = string.find('伙计')
#index = str.find(string, '伙计')
print(index)
import re
# aeiou
#pattern = re.compile('[aeiou\d]')
pattern = re.compile('[a-zA-Z]')
#string1 = '嫦娥28号发射成功\玉兔9号发射成功\嫦娥5号发射成功'
ret = pattern.match('0ie love you')
# ret = pattern.findall(strng1)
print(ret)