正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。python中提供了re模块用于正则表达式的匹配

1、re.findall:在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。

re.findall(pattern, string, flags=0)
  • pattern:匹配的正则表达式
  • string:匹配的字符串
  • flages:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等

re.I

使匹配对大小写不敏感

re.L

做本地化识别(locale-aware)匹配

re.M

多行匹配,影响^和$。当某字符串中有换行符​\n​,默认模式下是不支持换行符特性的,比如:行开头 和 行结尾,而多行模式下是支持匹配行开头的。

re.S

使 . 匹配包括换行在内的所有字符,默认模式下​​.​​​是不能匹配行符​​\n​​的。

re.U

根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.

re.X

可以添加注释

1.1、re.I:

python正则表达式_大小写

1.2、re.S:

import re

if __name__ == '__main__':
text = "测试\n测试"
pattern = ".*"
print("默认模式:{}".format(re.findall(pattern=pattern, string=text)))
print("忽略大小写:{}".format(re.findall(pattern=pattern, string=text, flags=re.S)))

python正则表达式_字符串_02

1.3、re.M:

import re

if __name__ == '__main__':
text = "测试\n一下"
pattern = "^一下"
print("默认模式:{}".format(re.findall(pattern=pattern, string=text)))
print("忽略大小写:{}".format(re.findall(pattern=pattern, string=text, flags=re.M)))

python正则表达式_大小写_03

1.4、re.X:

import re

if __name__ == '__main__':
text = "测试一下"
pattern = "^测试一下 # 测试"
print("默认模式:{}".format(re.findall(pattern=pattern, string=text)))
print("忽略大小写:{}".format(re.findall(pattern=pattern, string=text, flags=re.X)))

python正则表达式_大小写_04

2、re.match:尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 none

import re

if __name__ == '__main__':
text = "测试一下"
pattern1 = "测试"
pattern2 = "一下"
print(re.match(pattern=pattern1, string=text))
print(re.match(pattern=pattern2, string=text))

python正则表达式_字符串_05

3、re.search:扫描整个字符串并返回第一个成功的匹配。

import re

if __name__ == '__main__':
text = "测试abc一下"
pattern1 = "测试"
pattern2 = "一下"
print(re.search(pattern=pattern1, string=text))
print(re.search(pattern=pattern2, string=text))

python正则表达式_字符串_06

注意:re.search和re.match区别:re.search查找整个字符串,直到找到匹配;re.match如果开头不匹配,则直接返回None

4、re.compile:用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用

import re

if __name__ == '__main__':
pattern = re.compile(r"\d+")
print(pattern.match("test12"))
print(pattern.match("12test"))
print(pattern.search("test12"))
print(pattern.search("12test"))

python正则表达式_字符串_07