python正则表达式
原创
©著作权归作者所有:来自51CTO博客作者zhangnk的原创作品,请联系作者获取转载授权,否则将追究法律责任
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。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:
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)))
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)))
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)))
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))
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))
注意: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"))