正则

1、地址:

https://www.cnblogs.com/vamei/archive/2012/08/31/2661870.html

正则表达式的函数
r = re.compile(pattern)      #如果一个正则表达式要重复使用几千次,出于效率的考虑,我们应该先把这个正则先预编译好
e = re.search(pattern, string)  # 搜索整个字符串,直到发现符合的子字符串。
f = re.match(pattern, string)   # 从头开始检查字符串是否符合正则表达式。必须从字符串的第一个字符开始就相符。
a = re.split(pattern, string)    # 根据正则表达式分割字符串,将分割后的所有子字符串放在一个表(list)中返回
b = re.findall(pattern, string)  # 根据正则表达式搜索字符串,将所有符合的子字符串放在一给表(list)中返回
c = re.sub(pattern, replacement, string) # 在string中利用正则变换pattern进行搜索,对于搜索到的字符串,用另一字符串replacement替换。返回替换后的字符串。

 

2、贪婪.*  、非贪婪.*? 、非贪婪(.*?)

import re

str = 'aabbabaabbaa'
print(re.findall(r'a.*b', str))
# ['aabbabaabb']

print(re.findall(r'a.*?b', str))
# ['aab', 'ab', 'aab']

print(re.findall(r'a(.*?)b', str))
# ['a', '', 'a'] 

3、re.findall中参数re.S的意义

import re
str = '''aabbab
         aabbaa
         bb'''
print(re.findall(r'a.*?b',str))
#['aab', 'ab', 'aab']

print(re.findall(r'a.*?b',str,re.S))
#['aab', 'ab', 'aab', 'aa\n         b']

 4、语法

正则表达式的常用语法:
1)单个字符:
.                任意的一个字符
a|b            字符a或字符b
[afg]          a或者f或者g的一个字符
[0-4]          0-4范围内的一个字符
[a-f]           a-f范围内的一个字符
[^m]          不是m的一个字符
\s              一个空格
\S              一个非空格
\d              [0-9]
\D             [^0-9]
\w            [0-9a-zA-Z]
\W           [^0-9a-zA-Z]

2)重复
紧跟在单个字符之后,表示多个这样类似的字符
*               重复 >=0 次
+              重复 >=1 次
?              重复 0或者1 次
{m}           重复m次。比如说 a{4}相当于aaaa,再比如说[1-3]{2}相当于[1-3][1-3]
{m, n}       重复m到n次。比如说a{2, 5}表示a重复2到5次。小于m次的重复,或者大于n次的重复都不符合条件。

正则表达          相符的字符串举例
[0-9]{3,5}         9678
a?b                  b
a+b                  aaaaab

3) 位置
^         字符串的起始位置
$         字符串的结尾位置

正则表达        相符的字符串举例                  不相符字符串
^ab.*c$          abeec                                     cabeec (如果用re.search(), 将无法找到。)

posted @ 2020-08-10 10:02  whitewall  阅读(126)  评论(0)    收藏  举报