正则表达式练习网址
https://regex101.com/
正则表达式元字符
. 表示匹配除换行外的所有字符
- 表示匹配前面的子表达式任意次,包括0次
- 表示匹配前面的子表达式一次或多次,不包括0 次
{m,n} 花括号,便是前面的字符匹配指定的次数,至少m次,至多n次
匹配某种字符类型
\d 匹配0-9之间任意一个数字字符,,等价于[0-9]
\D 匹配任意一个不是0-9之间的数字字符,等价于[^0-9]
\s 匹配任意一个空白符,包括空格,tab,换行符,等价于表达式[\t\n\r\v\f]
\S 匹配任意一个非空白字符,等价于[^\t\n\r\v\f]
\w 匹配任意一个文字字符,包括大小写字母,数字,下划线,等价于[a-zA-z0-9]
缺省情况也包括Unicode文字字符,如果指定ASCII标记,则只包含ASCII字母
\W 匹配任意一个非文字字符,等价于表达式[^a-zA-Z0-9]c
贪婪模式和非贪婪模式
在正则表达式中,,+,?都是贪婪的,使用他们时,会尽可能多的匹配内容
例如:text=‘
使用正则表达式<.>匹配的是整个text文本
如果想匹配的到,,
[]
[] 表示匹配方括号里的任意字符
一些元字符,在括号里和普通字符一样
比如,[akm.],意思是匹配a,k,m和.这几个字符的任意一个,这里的.是普通字符
如果是在方括号中使用^,表示非方括号里面的字符集合
起始位置
^表示匹配文本的起始位置
如果是多行模式,表示匹配文本每行的开头位置
如果是单行模式,表示匹配整个文本开头的位置
结束位置
$表示匹配文本的结束位置
如果是单行模式,表示匹配整个文本的结束位置
如果是多行模式,表示匹配文本每行的结束位置
括号,组选择
括号是正则表达式的组选择,是从正则表达式匹配的内容里面提取出其中的某些部分
例如:
苹果,苹果是绿色的
橙子,橙子是橙色的
香蕉,香蕉是黄色的
需要提取出逗号前的苹果,橙子和香蕉,如果使用.*,也会将逗号匹配上
使用括号,就可以提取出苹果,橙子和香蕉
pattern
python正则表达式re
re
re常用的方法:
re.compile(pattern) -----返回一个正则表达式对象 Pattern
re.search(pattern,string)----扫描整个字符串,找到匹配的第一个位置,并返回一个匹配对象
re.match(pattern,string)-----如果string开始的0或者多个字符匹配到了正则表达式,则返回一个匹配对象
re.split(pattern,string)-----用pattern来分割string
re.findall(pattern,string)—找到所有的匹配,返回一个list
re.sub(pattern,repl,string)—使用repl来替换匹配到的字符串
re.A-----只匹配ASCII
re.M—多行匹配模式
re.S----.匹配所有字符,包含换行符
Match
Match是匹配对象
match.group()—返回一个或者多个匹配的子组,如果只有一个组括号,返回的是字符串,如果有多个,返回的是元祖
Pattern
正则表达式对象
使用re.compile可以创建一个Pattern实例
Pattern也有match,findall, search等方法
正则表达式的例子见字符串的处理