本文主要讲授在python中主要使用的re模块方法
1.re.search
re.search
是一个函数,用于在给定的字符串中搜索模式(pattern)。如果找到了匹配的模式,它会返回一个匹配对象;如果没有找到,它会返回None
re.I
是一个标志,用于指定正则表达式的匹配应该不区分大小写。也就是说,当你在模式中使用re.I
标志时,正则表达式中的字母将匹配任何大小写的字母。
result
:打印匹配对象本身。type(result)
:打印匹配对象的类型,这将是一个_sre.SRE_Match
类型。result.start()
:返回匹配的开始索引。result.end()
:返回匹配的结束索引。result.group()
:返回匹配的字符串。- 在Python的正则表达式中,前缀
r
表示原始字符串(raw string)。
import re
# 方法的使用
result = re.search(r"abc", "0bcAbcdabcde", re.I)
print(result, type(result), result.start(), result.end(), result.group())
2.re.findall
re.findall
是一个正则表达式函数,用于找出字符串中所有符合正则表达式的子串,并将它们作为列表返回。
result = re.findall(r"abc", "abcabcdAbcde", re.I)
print(result)
- 第一个参数是正则表达式模式。
- 第二个参数是被搜索的字符串。
re.I
是一个标志,表示不区分大小写(case-insensitive)
3.re.finditer
re.finditer
是一个正则表达式函数,它返回一个迭代器,每个迭代器元素都是一个匹配对象。
result = re.finditer(r"abc", "abcabcdAbcde", re.I)
print(result)
for data in result:
print(data.group())
4.re.match
re.match
函数用于从字符串的起始位置开始查找匹配正则表达式的部分。如果找到了匹配项,它会返回一个匹配对象;如果没有找到匹配项,或者匹配项不在字符串的起始位置,它会返回None
。
由于"abc"出现在字符串"0abcabcd"的起始位置之后的第二个字符开始,所以re.match
不会找到匹配项,并将返回None
使用re.match
时,匹配必须从字符串的起始位置开始。如果你想要查找字符串中任何位置的"abc",你应该使用re.search
,它在整个字符串中搜索匹配项,而不仅仅从起始位置开始.
result = re.match(r"abc", "0abcabcd")
print(result)
5.re.fullmatch
result = re.fullmatch(r"a\w+c", "abhaghijgje516e84e6c")
print(result)
re.fullmatch
函数用于在整个字符串范围内查找与正则表达式完全匹配的部分。如果整个字符串与正则表达式完全匹配,它会返回一个匹配对象;如果匹配不完全,它会返回None
。
a
表示匹配字母a
。\w+
表示匹配一个或多个字母数字字符或下划线(\w
是[0-9a-zA-Z_]
的简写)。c
表示匹配字母c
。
6.re.sub
re.sub
函数用于替换字符串中与正则表达式模式匹配的部分
result = re.sub(r"a\dc", "醒醒啦", "a1ca2cda3cde", count=1)
print(result)
正则表达式r"a\dc"
会匹配字符串中第一个a
后面紧跟一个数字,然后是c
的组合。由于count=1
,只有第一个匹配项会被替换。
7.re.subn
result = re.subn(r"a\dc", "醒醒啦", "a1ca2cda3cde",count=1)
print(result)
使用re.subn
函数时,如果正则表达式中包含特殊字符,需要对正则表达式字符串进行转义。在你提供的代码示例中,正则表达式r"a\dc"
中的\d
是一个特殊字符,它代表任意数字。
re.subn
会找到第一个匹配a\dc
的实例,将其替换"
,并返回一个包含替换后字符串和替换次数的元组。
8.re.split
re.split
函数使用正则表达式来分割字符串
maxsplit=1
参数指定了分割的最大次数,这里是1,意味着最多只分割一次。
result = re.split(r"a\dc", "a1ca2cda3cde", maxsplit=1)
print(result)
9.
# \w 数字 字母 下划线
# \W 非 数字 字母 下划线
# \d 数字
# \D 非数字
# \s 空白
# \S 非空白
# . 任意字符 出了\n 除非使用re.S 可以匹配所有
# ^ 开头 re.M 可以匹配\n匹配多行
# $ 结尾 re.M 可以匹配\n
# 贪婪: 尽可能匹配多个
# * 代表有>=0 个
# + 代表有>=1 个
# ? 代表有 1 个 或者0个
# 非贪婪: 尽可能匹配少个数
# 在贪婪模式后方追加一个?
# {n} 匹配n次
# {m,n} 匹配m-n次
# {m,n}? 非贪婪匹配
# [] 匹配其中一个
# | 或者
# 分组