调用模块指令
<span style="color: rgb(0, 0, 255);">import</span> re
常用关键字汇总
<span style="font-size: 16px;"><strong>findall </strong></span>
re.findall遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。
<span style="font-size: 16px;">格式:re.findall(‘前面放要查找的内容’,‘这里放被查找的内容’)</span>
<span style="font-size: 16px;"><strong>search</strong></span>
re.search函数会在字符串内查找模式匹配,只要找到第一个匹配然后返回,如果字符串没有匹配,则返回None。返回的变量需要调用group才能拿到结果 ,如果没有找到,那么返回None,调用group会报错。
<span style="font-size: 16px;">格式:re.search(‘前面放要查找的内容’,‘这里放被查找的内容’) </span>
<strong>match</strong>
决定RE是否在字符串刚开始的位置匹配。//注:这个方法并不是完全匹配。当pattern结束时若string还有剩余字符,仍然视为成功。<p><span style="font-size: 16px;">想要完全匹配,可以在表达式末尾加上边界匹配符'$'。</span></p><p><span style="color: rgb(0, 0, 0);">match是从头开始匹配,如果正则规则从头开始可以匹配上,就返回一个变量。 匹配的内容需要用group才能显示 。 如果没匹配上,就返回None,调用group会报错。</span></p>
<span style="color: rgb(0, 0, 0);">格式:</span> re.match(‘前面放要查找的内容’,‘这里放被查找的内容’)
<span style="color: rgb(0, 0, 0);"><strong>compile</strong></span>
只会从开头匹配,如果不是开头的字符串,那么将不会匹配成功。<strong>将正则表达式编译成为一个 正则表达式对象。</strong>
re.<span style="color: rgb(0, 0, 0);">compile</span>
<span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0);"><strong>search</strong></span></span>
<span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0);">re.search函数会在字符串内查找模式匹配,只要找到第一个匹配然后返回,如果字符串没有匹配,则返回None。</span></span>
re.search(pattern, string, flags=0)
<span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0);"><strong>finditer</strong></span></span>
<span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0);">搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器。找到 RE 匹配的所有子串,并把它们作为一个迭代器返回。</span></span>
re.finditer(pattern, string, flags=0)
<span style="color: rgb(0, 0, 0);"><strong>split </strong></span>
按照能够匹配的子串将string分割后返回列表。可以使用re.split来分割字符串,如:re.split(r'\s+', text);将字符串按空格分割成一个单词列表。
re.split(pattern, string[, maxsplit])
<span style="color: rgb(0, 0, 0);"><strong>sub</strong></span>
使用re替换string中每一个匹配的子串后返回替换后的字符串。<p>re.sub还允许使用函数对匹配项的替换进行复杂的处理。</p><p>如:re.sub(r'\s', lambda m: '[' + m.group(0) + ']', text, 0);将字符串中的空格' '替换为'[ ]'。</p>
re.sub(pattern, repl, string, count)
<strong> subn</strong>
返回替换次数。
re.subn(pattern, repl, string, count=0, flags=0)
注意事项
<strong>1、re.match与re.search与re.findall的区别</strong>
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配;findall是匹配整个字符串,匹配所有符合条件的。
<strong>2、贪婪匹配与非贪婪匹配</strong>
*?,+?,??,{m,n}? 前面的*,+,?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配