入门re正则表达式

本文主要讲授在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}? 非贪婪匹配
# []  匹配其中一个
# | 或者
# 分组

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值