search和findall的区别
import re
print(re.search(“www”,”Www/Www.Baidu/baidu.BAIDU.com/\nwww.BAIdu.com”))
print (“…………………………………………………………………………………………”)
print(re.findall(“www”,”www/Www.Baidu/baidu.BAIDU.com/\nwww.BAIdu.com”,flags = re.I))
“””
通过上两行代码可以得出结论:
search()和findall()都是搜索整个字符串内容,区别在于,search()返回的值是第一个匹配的,
而findall()返回的是所有符合的,并将他们存入一个列表中,将列表返回,所以可以指定findall()的flags=re.I,表示不区分大小写,有多少都返回。
“”“
##匹配任意单个字符
print (“…………………………………匹配任意单个字符…………………………………………………”)
print (“…………………………………任意一个数字[0-9]…………………………………………………”)
print(re.findall(“[0-9]”,”www/Www.Baidu/baidu.BAIDU.com/\nwww.BAIdu/12306.com”,flags = re.I))
print (“…………………………………任意一个数字\d………………………………”)
print(re.findall(r”\d”,”www/Www.Baidu/baidu.BAIDU.com/\nwww.BAIdu/12306.com”,flags = re.I))
“””
根据上面的代码可以看得出[0-9]和\d是一样的作用,[^0-9]和\D是一样的效果
通过这里也可以得出[0-9a-zA-Z_]和\w是一样的作用,[0-9a-zA-Z_]和\W是一样的效果
[0-9a-z]、[0-9a-zA-Z]同理
“”“
查找字符串中除换行符 外的任意一个字符
print (“…………………………………换行符外的任意字符,小点………………………………………”)
print(re.findall(“.”,”www/Www.Baidu/baidu.BAIDU.com/\nwww.BAIdu/12306.com”,flags = re.I))
查找空格
print (“…………………………………查找空格\s………………………………………”)
print(re.findall(“\s”,”www/Www.Baidu/\tbaidu/ \rBAIDU.com/\nwww.BAIdu/\fwww.12306.com”,flags = re.I))
查找非空格
print (“…………………………………查找非空格\S………………………………………”)
print(re.findall(“\S”,”www/Www.Baidu/\tbaidu/ \rBAIDU.com/\nwww.BAIdu/\fwww.12306.com”,flags = re.I))
“””
综上四行代码可以看出,空格包括space键的,\t、\n、\r、\f等
“”“
print (“…………………………………边界符…………………………………………………”)
行首行尾匹配
print (“…………………………………行首 ^ ………………………………………”)
print(re.findall(“^www”,”www/Www.Baidu/\tbaidu/ \rBAIDU.com/\nwww.BAIdu/\nwww.12306.com”,flags = re.I))
print (“…………………………………行尾
………………………………………”)print(re.findall(“com
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
”
)
p
r
i
n
t
(
r
e
.
f
i
n
d
a
l
l
(
“
c
o
m
”,”www/Www.Baidu/\tbaidu/ \rBAIDU.com\nwww.BAIdu/\fwww.12306.com”,flags = re.I))
字符串首尾匹配
print (“…………………………………串首 \A ………………………………………”)
print(re.findall(“\Awww”,”www/Www.Baidu/\tbaidu/ \rBAIDU.com/\nwww.BAIdu/\nwww.12306.com”,flags = re.I))
print (“…………………………………串尾 \Z ………………………………………”)
print(re.findall(“com\Z “,”www/Www.Baidu/\tbaidu/ \rBAIDU.com\nwww.BAIdu/\fwww.12306.com”,flags = re.I))
print (r”…………………………………单词尾部匹配 \b ………………………………………”)
print(re.findall(r”com\b”,”www/Www.Baidu/\tbaidu / \rBAIDU.com/\nwww.BAIdu/\nwww.12306.com”,flags = re.I))
print (“…………………………………不在单词尾部的匹配 \B ………………………………………”)
print(re.findall(r”Bai\B”,”www/Www.Baidu/\tbaidu/ \rBAIDU.com\nwww.BAIdu/\fwww.12306.com”,flags = re.I))
print (“…………………………………多字符匹配…………………………………………………”)
匹配多个字符
print (r”…………………………………匹配多个字符串(abc) ………………………………………”)
print(re.findall(“(baidu)”,”www/Www.Baidu/\tbaidu / \rBAIDU.com/\nwww.BAIdu/\nwww.12306.com”,flags = re.I))
print (“…………………………………匹配零个或者一个字符 X? ………………………………………”)
print(re.findall(r”b?”,”www/Www.Baidu/\tbaidu/ \rBbbbAIDU.com\nwww.BAIdu/\fwww.12306.com”,flags = re.I))
print (“…………………………………匹配至少一个字符 X+ ………………………………………”)
print(re.findall(r”b+”,”www/Www.Baidu/\tbaidu/ \rBbbbAIDU.com\nwww.BAIdu/\fwww.12306.com”,flags = re.I))
print (“…………………………………匹配至少零个或多个字符 X* ………………………………………”)
print(re.findall(r”b*”,”www/Www.Baidu/\tbaidu/ \rBbbbAIDU.com\nwww.BAIdu/\fwww.12306.com”,flags = re.I))
print(re.findall(r”b+”,”www/Www.Baidu/\tbaidu/ \rBbbbAIDU.com\nwww.BAIdu/\fwww.12306.com”,flags = re.I))
print (“…………………………………匹配至少n字符 X{n} ………………………………………”)
print(re.findall(r”w{3}”,”www/Www.Baidu/\tbaidu/ \rBbbbAIDU.com\nwww.BAIdu/\fwww.12306.com”,flags = re.I))
print (“…………………………………匹配至少n最多m个字符 X{n,m} ………………………………………”)
print(re.findall(r”w{1,3}”,”www/Www.Baidu/\tbaidu/ \rBbbbAIDU.com\nwww.BAIdu/\fwww.12306.com”,flags = re.I))