re模块的方法:
使用的关键字:
pattern: 匹配模型
string:目标字符串
flags: 匹配的模式
-
re.match(pattern, string, flags):
功能: 从一个字符串开始去匹配。qq_num = "8888999aaa" #定义一个字符串 pattern_str = r"[1-9]\d{4,10}" #定义正则表达式,匹配位数为 5-11位的字符串 print(re.match(pattern_str, qq_num)) #返回值:<re.Match object; span=(0, 7), match='8888999'>
-
re.search(pattern, string, flags):
功能: 扫描字符串(从任意位置开始查找),寻找匹配,匹配到了就返回,只能匹配一个满足条件的结果。str_test = "aaabbbaaacccaaa" pattern = "aaa" print(re.search(pattern, str_test)) #返回值:<re.Match object; span=(0, 3), match='aaa'>
-
re.findall(pattern, string, flags):
功能: 查找所有满足匹配模型的结果,以list作为返回的结果。str_test = "aaabbbaaacccaaa" pattern = "aaa" print(re.findall(pattern, str_test)) #返回值:['aaa', 'aaa', 'aaa']
-
re.finditer(pattern, string, flags):
功能: 查找所有满足匹配模型的结果,返回一个迭代器。str_test = "aaabbbaaacccaaa" pattern = "aaa" print(re.finditer(pattern, str_test)) #返回值:<callable_iterator object at 0x000001D25982FE80>
-
re.sub(pattern, string, count=0, flags=0):
功能: 替换字符串中符合匹配模型的内容,即替换repl,也可以控制替换的次数countstr_test = "计算机,软件,网络,大数据" print(re.sub(",", "|", str_test, count=2)) #count控制替换的次数 #返回值:计算机|软件|网络,大数据
-
re.subn(pattern, repl, string, count=0, flags=0):
功能: 替换字符串中符合匹配模型的内容,替换repl,也可以控制替换的次数count返回值:new_string, number=》替换后的字符串,替换次数。str_test = "aaabbbaaacccaaa" pattern = "aaa" print(re.subn(pattern, "bbb", str_test, count=2)) #将"aaa"替换为"bbb", 并控制替换2次 #返回值:('bbbbbbbbbcccaaa', 2)
-
re.split(pattern, string, maxsplit=0, flags=0):
功能: 根据匹配模型来进行切割,maxsplt在于控制切割次数。
str_test = "aaabbbaaacccaaa" pattern = "aaa" print(re.split(pattern, str_test, maxsplit=2)) #控制切割次数为2次 #返回值:['', 'bbb', 'cccaaa']
-
re.compile(pattern, flags):
编译。这是因为我们在调用re.match, re.search …时候,它的内部会先去编译匹配模型和模式之后,获取到pattern对象。
str_test = "aaaaaaaaa"
str_test2 = "bbbbbbbbb"
str_test3 = "ccccccccc"
pattern = "[abc]" #匹配"a" "b" "c"中的任意一个
obj = re.compile(pattern) #去编译search模型来获取pattern的对象
print(obj.search(str_test))
print(obj.search(str_test2))
print(obj.search(str_test3))
#返回值:<re.Match object; span=(0, 1), match='a'>
<re.Match object; span=(0, 1), match='b'>
<re.Match object; span=(0, 1), match='c'>