匹配符介绍
字符 | 解释 |
---|---|
x | 字符x 可代表任意合法的字符 |
\uhhhh | 十六进制值 0xhhhh 表示的 Unicode 字符 |
\t | 制表符(\u0009 ) |
\n | 换行符(\u000A ) |
\r | 回车符(\u000D ) |
\f | 换页符(\u000C ) |
\a | 报警(bell)符(\u0007 ) |
\e | Escape符(\u001B ) |
\cx | x 对应的控制符。例如,\cM 匹配Ctrl+M 。x 必须是A-Z 或a-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]
,表示a
、b
、c
其中任意一个字符。 - 表示范围:例如
[a-f]
,表示a-f
范围内的任意字符。 - 表示求否
^
:例如[^abc]
,表示非a
、b
、c
的任意字符。
边界匹配符
边界匹自己符 | 说明 |
---|---|
^ | 行的开头 |
$ | 行的结尾 |
\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 的内容替换成repl 。count 参数控制最多替换多少次,默认全部替换 |
re.split(pattern, string, maxsplit=0, flags=0) | 使用pattern 对string 进行分割,返回分割得到的子串组成的列表,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
函数的返回值 - 匹配对象:
match
、search
方法的返回值
示例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号小区。'