正则表达式匹配符介绍-python

匹配符介绍

字符解释
x字符x可代表任意合法的字符
\uhhhh十六进制值 0xhhhh 表示的 Unicode 字符
\t制表符(\u0009)
\n换行符(\u000A)
\r回车符(\u000D)
\f换页符(\u000C)
\a报警(bell)符(\u0007)
\eEscape符(\u001B)
\cxx对应的控制符。例如,\cM匹配Ctrl+Mx必须是A-Za-z之一
$匹配字符串的结尾。如果要匹配$字符本身,要使用\$
^匹配字符串的开头。如果要匹配^字符本身,要使用\^
.能够匹配除换行符 \n 以外的任意单个字符。
\w与单个字母数字字符匹配。
\W与单个非字母数字字符匹配。
\d与单个数字匹配。
\D与单个非数字匹配。
\s与单个空白字符(空格,换行符,返回符,制表符,表格)匹配。
\S与任何非空格字符匹配。
()被括起来的表达式部分将作为分组,并返回相匹配的文本。
[..]匹配方括号中..表达的字符。
[^..]匹配方括号中..表达以外的任何字符。比如,\u4e00-\u9fa5表示所有中文字符,[^\u4e00-\u9fa5]就可以表示匹配所有非中文字符。
.*[/]$匹配以/结尾的字符串。
.*[^/]$匹配不以/结尾的字符串。
{m,n}匹配前一个字符的出现次数在 m 至 n 次之间。
a|b匹配 a 或 b。
?匹配前一个字符出现次数 0 或 1
+模式前一个字符出现 1 次或多次
*模式前一个字符出现 0 次或多次
\转义字符,通常用于将一些被占用成为正则表达的符号还原为原来的意思,比如 \+ 表示加号。

方括号表达式的三种含义

  • 表示枚举:例如[abc],表示abc其中任意一个字符。
  • 表示范围:例如[a-f],表示a-f范围内的任意字符。
  • 表示求否^:例如[^abc],表示非abc的任意字符。

边界匹配符

边界匹自己符说明
^行的开头
$行的结尾
\b单词的边界,即只能匹配单词前后的空白
\B非单词的边界,即只能匹配不在单词前后的空白
\A只匹配字符串的开头
\Z只匹配字符串的纺尾,仅用于最后的结束符

python正则表达式模块re

python中,re是一个专业的正则表达式模块,以下是该模块中常用的几个函数:

函数名描述
re.compile(pattern, flags=0)编译正则表达式模式,返回Pattern对象。
re.search(pattern, string, flags=0)扫描整个字符串,并返回字符串中第一处匹配pattern匹配对象,如果未找到匹配项,则返回None
re.match(pattern, string, flags=0)尝试从字符串的开始位置来匹配正则表达式,返回匹配对象,如果没有找到匹配,则返回None
re.findall(pattern, string, flags=0)扫描整个字符串,并返回字符串中所有匹配pattern的子串组成的列表
re.finditer(pattern, string, flags=0)扫描整个字符串,并返回字符串中所有匹配pattern的子串组成的迭代器
re.fullmatch(pattern, string, flags=0)要求整个字符串能匹配pattern,并返回匹配对象,如果未找到匹配,则返回None
re.sub(pattern, repl, string, count=0, flags=0)string 字符串中所有匹配pattern的内容替换replcount参数控制最多替换多少次,默认全部替换
re.split(pattern, string, maxsplit=0, flags=0)使用patternstring进行分割,返回分割得到的子串组成的列表,maxsplit参数控制最多分割几次
re.purge()清除正则表达式缓存
re.escape(pattern)pattern中除ASCII字符、数值、下划线之外的其他字符进行转义
re.subn(pattern, repl, string, count=0, flags=0)返回一个二元组,包含(new_string, number)
re.template(pattern, flags=0)编译模板pattern,返回pattern对象
``
``

re模块中常用的有两种对象:

  • 正则表达式对象:re.compile函数的返回值
  • 匹配对象:matchsearch方法的返回值

示例1-只匹配中文字符

在python中使用正则表达式,首先需要加载re模块包:

import re
text_pattern = "[\u4e00-\u9fa5]*"
text_p = re.compile(text_pattern)
text_r = text_p.findall("张三住在123号小区。")
text_r

结果:

['张三住在', '', '', '', '号小区', '', '']

示例2-匹配非中文字符

text_pattern = "[^\u4e00-\u9fa5]*"
text_p = re.compile(text_pattern)
text_r = text_p.findall("张三住在123号小区。")
text_r

结果:

['', '', '', '', '123', '', '', '', '。', '']

示例3-去除括号及里面的内容

pattern = "(.*)"    #中文括号
re.sub(pattern, "", "张三(法外狂徒)住在123号小区。")

结果:

'张三住在123号小区。'
pattern = "\(.*\)"    #英文括号
re.sub(pattern, "", "张三(法外狂徒)住在123号小区。")

结果:

'张三住在123号小区。'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

great-wind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值