python正则表达式

python正则表达式

1、re简介

正则表达式re,是Regular Expression的简称。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

2、在python中使用正则表达式

在python中许多场合(本人是在使用爬虫时)正则表达式都能起到很关键的作用,在使用前,先引用re包。

1、引入

import re

引入re包

2、基础语法

re.findall(r'正则式','文本',flag)

findall返回的是一个数组,每个结果是一个元素

re.search(r'正则式','文本',flag)

search返回的是一个match对象

re.sub(r'正则式','替换对象','文本',flag)

寻找正则式并替换成指定内容

3、写正则表达式的步骤

  1. 确定包含几个子模式
  2. 确定各个子模式内容
  3. 各个子模式重复情况
  4. 位置限制

4、正则表达式的基础语法

1.字符类型
正则内容 匹配内容
a,b,c,1,2,3 字符常量,写什么就是什么
\d 一个数字
\D 一个非数字
\s 一个空格
\S 一个非空格
\w 一个任意字母、数字、下划线
\W 一个非任意字母、数字、下划线
. 任意字符
[abc] a,b,c中任意一个字符
[a-e] a-e中任意一个字符
[1-9] 1-9中任意一个数字
[^3-5] 取反,除了3-5中的任意内容
2.重复次数、量词
量词内容 匹配内容
* 0或多个
+ 1或多个
0或一个
2个
2到5个
3.组合模式
() 分组,运用括号防止歧义
| 多种情况同时出现
拼接 多个模式直接拼接
4.位置
正则内容 匹配内容
^ 文章开头
$ 文章结尾
\b 单词边界
\B 非单词边界
5.flag
re.I 忽略大小写的匹配模式
re.M 多行模式, 改变 ^ 和 $ 的行为
re.S 此模式下 '.' 的匹配不受限制,可匹配任何字符,包括换行符,也就是默认是不能匹配换行符
re.X 冗余模式, 此模式忽略正则表达式中的空白和#号的注释

5、实际案例

1、不使用正则表达式的查找

# 在字符串中找到一段固定内容,不需要使用正则表达式
text = 'The quick brown fox jumps over a lazy dog'
target = 'fox'
if target in text:
    print('找到了')
找到了

2、寻找固定内容

# 用正则表达式在文本中寻找固定内容
text = 'The quick brown fox jumps over a lazy dog'
result = re.findall(r'fox',text)
print(result)
['fox']

3、寻找特定内容

# 用正则表达式在文本中寻找特定内容
# 寻找单个字符
text = 'The quick brown fox jumps over a lazy dog'
result = re.findall(r'\w',text)
print(result)

# 寻找多个字符
text = 'The quick brown fox jumps over a lazy dog'
result = re.findall(r'\w+',text)
print(result)
['T', 'h', 'e', 'q', 'u', 'i', 'c', 'k', 'b', 'r', 'o', 'w', 'n', 'f', 'o', 'x', 'j', 'u', 'm', 'p', 's', 'o', 'v', 'e', 'r', 'a', 'l', 'a', 'z', 'y', 'd', 'o', 'g']
['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'a', 'lazy', 'dog']

4、寻找多种情况

# 寻找3、4个字母的单词
# \b表示单词的边界,限定单词只能为3个字母或四个字母
text = 'The fast brown fox jumps over a lazy dog and has 24 letters'
result = re.findall(r'\b\w{3}\b|\b\w{4}\b',text)
print(result)
['The', 'fast', 'fox', 'over', 'lazy', 'dog', 'and', 'has']

5、寻找组合情况

# 寻找数字 单词的情况
text = 'The fast brown fox jumps over a lazy dog and has 24 letters'
result = re.findall(r'\d+ \w+',text)
print(result)
['24 letters']

6、寻找限定位置的情况

# 在句首或句尾
text = 'The fast brown fox jumps over a lazy dog and has 24 letters'
result = re.findall(r'^\w+|\w+$',text)
print(result)
['The', 'letters']

7、判断是否存在

text = 'The fast brown fox jumps over a lazy dog and has 24 letters'
if re.findall(r'fox',text):
    print('存在')
else :
    print('不存在')
存在

6、总结

当一个问题可以用正则表达式解决,那么你就有了两个问题。

posted @ 2021-05-12 12:14  huigugu  阅读(108)  评论(0编辑  收藏  举报