正则表达式记录 python

入门

\d 可以匹配一个数字

\w 可以匹配一个字母或者数字

\s 可以匹配空白符号,空格,制表符

. 可以匹配任意一个字符

要匹配变长的字符,在正则表达式中

  • *表示任意个字符(包括0个)

  • +表示至少一个字符

  • ?表示0个或1个字符

  • {n}表示n个字符

  • {n,m}表示n-m个字符

进阶

要做更精确地匹配,可以用[]表示范围,比如:

  • [0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线;
  • [0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100''0_Z''Py3000'等等;
  • [a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量;
  • [a-zA-Z\_][0-9a-zA-Z\_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。

A|B可以匹配A或B,所以(P|p)ython可以匹配'Python'或者'python'

^表示行的开头,^\d表示必须以数字开头。

$表示行的结束,\d$表示必须以数字结束。

你可能注意到了,py也可以匹配'python',但是加上^py$就变成了整行匹配,就只能匹配'py'了。

切分字符串
s = 'a b     c'
t = s.split(' ')
print(t)
print(re.split(r'[\s\,]', 'a,b,c d'))
print(re.split(r'\s+', 'a b c     d'))

常用的函数

re.match()
从指定字符串的开始位置进行匹配,匹配成功则继续匹配,否则返回None

re.search()
扫描整个字符串,返回第一个匹配成功的字符串,否则返回 None

re.findall()
扫描整个字符串,通过列表形式返回所有符合的字符串

re.sub()
替换字符串中的内容

re.split()
用于将字符串分割
# matching string
import re

pattern1 = "cat"
pattern2 = "bird"
string = "dog runs to cat"
# print(pattern1 in string)
# print(pattern2 in string)
ptn = r"r[au]n"

# print(re.search(ptn, string))
# print(re.search(pattern2, string))
print(re.search(r"r[A-Z]n", "dog runs to cat"))
print(re.search(r"r[a-z]n", "dog runs to cat"))
print(re.search(r"r[0-9]n", "dog runs to cat"))
print(re.search(r"r[0-9a-z]n", "dog runs to cat"))
# 数字
# \d  : decimal digit  匹配单个数字
print(re.search(r"r\dn", "dog r1ns to cat"))

# \D : any non-decimal digit  匹配非数字
print(re.search(r"r\Dn", "dog r1ns to cat"))

# 空白
# \s : any white space [\t\n\r\f\v]
print(re.search(r"r\sn", "r\nn r5n"))
# \S : opposite to \s, any non-white space
print(re.search(r"r\Sn", "r\nn r5n"))

# 所有的字母数字和 _
# \w  : [a-zA-Z0-9_]
print(re.search(r"r\wn", "r\nn r5n"))
# \W  : opposite to \w

print(re.search(r"r\Wn", "r\nn r5n"))

# 转义字符
# \\ : match \

# 句尾句首
# ^ : match line begging
print(re.search(r"^dog", string))
# $ : match line ending
print(re.search(r"cat$", string))

# 是否
# ? : may or may not occur
print(re.search(r"Mon(day)?", "Monday"))
print(re.search(r"Mon(day)?", "Mon"))

# 0 或 多次
# *

# 1 或 多次
# +

# 可选次数
# {n, m}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值