首页 > 代码库 > 正则表达式整理
正则表达式整理
元字符:
. 除换行符的任意字符
\ 转义字符
[...] 字符集合
\d 数字:[0-9]
\D 非数字[0-9]
\s 空白字符 [<空格>\t\r\n\f]
\S 非空白字符[^\s]
\w 单词字符[A-Za-z0-9_]
\W 非单词字符[^\w]
数量词:
* 匹配一个字符0或多次
+ 匹配前一个字符1次或多次
? 匹配前一个字符0次或1次
{m} 匹配前一个字符m次
{0,}等同于* {1,}等同于+ {0,1}等同于?
{m,n} 匹配前一个字符m至n次
边界符:
^ 匹配字符串开头,多行匹配每一行开头
$ 匹配字符串末尾,多行匹配每一行末尾
\A 仅匹配字符串开头
\Z 仅匹配字符串末尾
\b 匹配\w和\W之间
(^ 放在字符集合外:表示匹配字符串开头
放在字符集合里:表示非)
逻辑、分组:
| 左右表达式任意匹配一个
先匹配左边一旦成功则跳过匹配右边
如果|没有包含在()中,匹配整个正则表达式
(...) 分组匹配,从左到右,每遇到一个编号+1,分组后可加数量词
(?P<name>...) 除了分组序号外,指定一个name的别名
\<number> 引用编号为<number>的分组匹配到的字符串
(?P=name) 引用别名为<name>的分组匹配到的串
方法、函数:
match() 决定RE是否在字符串刚开始的位置匹配
search() 扫描字符串,找到这个RE匹配的位置
findall() 找到RE匹配的所有子串,并把它们作为一个列表返回
finditer() 找到RE匹配的所有子串,并把它们作为一个迭代器返回
如果没有匹配到,match()和search()将返回None,否则返回MatchObject实例
MatchObject实例方法:
group() 返回被RE匹配的字符串
start() 返回匹配开始的位置
end() 返回匹配结束的位置
span() 返回一个元组包含匹配(开始,结束)的位置
p = re.compile(...)
m = p.match(‘stirng goes here‘)
if m:
print ‘Match found:‘,m.group()
else:
print ‘No match‘
模块级函数:
match()
search()
sub() re.sub(正则表达式string,要替换的string,原始字符串)
subn() 和sub用法一样,会同时返回替换的次数
split() re.split(正则表达式,原始字符串string)
findall()
re属性(编译标志flag):
DOTALL,S 使.匹配包括换行在内的所有字符
IGNORECASE,I 使匹配对大小写不敏感
LOCAL,L 使本地化识别(locale-aware)匹配(法语等)
MULTILINE,M 多行匹配,影响^和$
VERBOSE,X 能够使用REs的verbose状态,使之被组织得更清晰易懂
分组:
(...)
(...|...)
当有分组时,findall返回的结果会优先返回分组(括号中)中的数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。