什么是正则表达式?
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
正则表达式不是Python独有的,目前主流的开发语言都支持正则表达式,在Python中是使用re模块来实现正则表达式。
正则表达式常用符号
match函数
re.match会尝试从字符串的起始位置匹配一个字符串表达式,如果匹配成功就返回匹配结果,如果匹配失败就返回None.
比如这里有一个字符串:
content = 'open the command palette 123456 Hello world!'
我想要匹配出其中的数字,可以这样写:
import re
content = 'open the command palette 123456 Hello world!'
# 在match方法中,第一个参数为正则表达式,第二个参数为待匹配的字符串
result = re.match('^open.*?(d+).*?world!$', content)
print(result)
print(result.group(1))
<_sre.SRE_Match object; span=(0, 44), match='open the command palette 123456 Hello world!'>
123456
这里^open
指定了字符串的开头,.*?
表示以非贪婪模式匹配0或多个字符,(d+)
表示我们想要提取的是1到多个数字,需要提取的内容一定要放在小括号里,后面接着.*?
表示以非贪婪模式匹配0或多个字符,最后的world!$
指定了字符串的结尾。
这里group(1)
表示提取第一个小括号里的内容,如果有多个小括号,可分别使用group(2)
,group(3)
来提取。
贪婪匹配与非贪婪匹配的区别
在上面的例子中,我们使用了.*?
表示以非贪婪模式匹配0或多个字符,这里如果将?
去掉,就变