regrex pattern

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 \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...) 与常规圆括号类似,但可以通过符号组名称来访问与该组匹配的子字符串。
(?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]匹配0059,[0-9A-Fa-f]匹配十六进制,-转义或在开始或结束匹配一个字母
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
A|B 逻辑或,匹配到A或B既停止

8.转义

符号 描述
\ 转义,在字符串前添加r会取消转义

9.注释

(?#...)

参考:
https://www.jianshu.com/p/147fab022566

你可能感兴趣的:(Python,python)