re.compile(pattern, flags=0) |构造方法,将正则表达式的字符串编译为一个 正则表达式对象 (正则对象)
应用
1.^
和$
^hello
hello world
中的hello
复合规则,但是word\nhello
中的hello
则不符合规则
开启re.multiline
模式后,world\nhello
中的hello
也符合规则。
分组
引用’quote’ | 引用的方法 |
---|
在正则表达式中 | (?P=quote) \1 |
在匹配的结果中 | m.group('quote') m.end('queto') |
在re.sub中的repl里 | \g<quote> \g<1> \1 |
api
1.元字符
符号 | 描述 |
---|
. | 1.默认模式匹配除换行符外所有字符;2.flag=DOTALL时则匹配所有字符包含换行符 |
\w | 匹配字符 |
\s | 空白字符,[ \t\n\r\f\v] |
\d | 十进制数,相当于[0-9] |
\D | 和\d 相反,非十进制数[^0-9] |
\S | 非空白字符 |
\W | 匹配非字符 |
2.限定符
符号 | 描述 |
---|
* | 匹配前面字符或RE的0次或多次 |
+ | 匹配前面字符或RE的1次或多次 |
? | 匹配前面字符或RE的0次或1次 |
{m} | 匹配前面字符m次 |
{m,n} | 匹配前面字符m到n次 |
{m,n}? | 非贪婪匹配 |
3.限位符
符号 | 描述 |
---|
^ | 1.匹配字符串开始位置;2.在MULTILINE模式下每个换行符后立即匹配 |
$ | 1.匹配字符串结束位置;2.在MULTILINE模式下每个换行符后立即匹配 |
\b | 匹配空字符串r’\bfoo\b’匹配’foo’, ‘foo.’, ‘(foo)’, ‘bar foo baz’ but not ‘foobar’ or ‘foo3’. |
\B | 和\b 相反,r’py\B’ matches ‘python’, ‘py3’, ‘py2’, but not ‘py’, ‘py.’, or ‘py!’. |
\Z | 只匹配字符串的末尾。只能放在正则表达式末尾 |
\A | 只匹配字符串的开头。只能放在正则表达式开头 |
4.贪婪与懒惰
符号 | 描述 |
---|
*?, +?, ?? | 消除贪婪模式,’ b ‘,<.*>非贪婪模式下为’’ |
5.分组
符号 | 描述 |
---|
(...) | 在匹配完成后可以检索组的内容,并且可以在后面的字符串中使用\number特殊序列进行匹配 |
\number | 匹配相同编号的组的内容。 例如(.+) \1 这个式子等价于(.+) (.+) |
(?P<name>...) | 与常规圆括号类似,但可以通过符号组名称来访问与该组匹配的子字符串。 |
(?P=name) | 对指定组的引用 |
6.零宽断言
符号 | 描述 |
---|
(?=...) | 如果…末尾有…才匹配,例如, Isaac(?=Asimov) 只有跟随着’Asimov’才会匹配’Isaac’。 |
(?!...) | 如果…末尾没有…才匹配,例如,Isaac(?!Asimov)只有在没有跟随’Asimov’时才会匹配’Isaac’。 |
(?<=...) | 如果开头有…才匹配, |
(?<!...) | 如果开头没有…才匹配 |
(?(id/name)yes-pattern |no-pattern) | |
7.取其一
符号 | 描述 |
---|
[] | 1.匹配包含的任意一个;2.匹配范围,比如[a-z] 匹配a到z的任意一个,[0-5][0-9] 匹配00 到59 ,[0-9A-Fa-f] 匹配十六进制,- 转义或在开始或结束匹配一个字母 |
[^x] | 匹配除了x以外的任意字符 |
[^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
A|B | 逻辑或,匹配到A或B既停止 |
8.转义
9.注释
(?#...)
参考:
https://www.jianshu.com/p/147fab022566