1. 正则表达式
正则表达式,又称规则表达式,它是用于匹配字符串,unicode,bytes的通用方法.使用特定的格式对特定的文本做模式匹配,以此来定位要处理的字符.
这种模式匹配的特定格式是各个语言通用的,可以看https://deerchao.net/tutorials/regex/regex.htm这个网站学习,本文不做多余阐述.
python中使用re模块来使用正则表达式,它的接口有:
re.compile(pattern)
产生正则匹配对象
import re prog = re.compile(r"\W+") prog.match("Words, words, words.") re.match('com','comwww.runcomoob') <_sre.SRE_Match object; span=(0, 3), match='com'> re.search(pattern, string, flags=0)
扫描通过字符串查找正则表达式模式产生匹配的第一个位置,并返回相应的匹配对象.如果字符串中没有位置匹配模式则返回None;请注意这不同于在字符串中的某一点找到零长度匹配.
re.match(pattern, string, flags=0)
如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的匹配对象.如果字符串与模式不匹配,返回None;请注意这与零长度匹配不同.请注意即使在MULTILINE模式下,re.match()只会在字符串的开头匹配,而不是在每一行的开头.如果要在字符串中的任意位置找到匹配项,请改用search()
re.fullmatch(pattern, string, flags=0)
如果整个字符串与正则表达式模式匹配,则返回一个相应的匹配对象.如果字符串与模式不匹配,返回None;请注意,这与零长度匹配不同
上面的接口都会返回一个匹配对象用于展示匹配的结果
re.split(pattern, string, maxsplit=0, flags=0)
按pattern的出现拆分字符串.如果在模式中使用捕获括号,则模式中所有组的文本也作为生成列表的一部分返回.如果maxsplit不为零,则最多会出现maxsplit拆分,并将该字符串的其余部分作为列表的最后一个元素返回
import re re.split(r'\W+', 'Words, words, words.') ['Words', 'words', 'words', ''] re.split(r'(\W+)', 'Words, words, words.') ['Words', ', ', 'words', ', ', 'words', '.', ''] re.split(r'\W+', 'Words, words, words.', 1) prog = re.compile(r"\W+") prog.match("Words, words, words.") 0prog = re.compile(r"\W+") prog.match("Words, words, words.") 1 prog = re.compile(r"\W+") prog.match("Words, words, words.") 2prog = re.compile(r"\W+") prog.match("Words, words, words.") 3 prog = re.compile(r"\W+") prog.match("Words, words, words.") 4prog = re.compile(r"\W+") prog.match("Words, words, words.") 5 prog = re.compile(r"\W+") prog.match("Words, words, words.") 6prog = re.compile(r"\W+") prog.match("Words, words, words.") 7 prog = re.compile(r"\W+") prog.match("Words, words, words.") 8re.findall(pattern, string, flags=0)
返回字符串中模式的所有非重叠匹配,作为字符串列表.字符串从左到右扫描,并按照找到的顺序返回匹配项.如果模式中存在一个或多个组,则返回组的列表;如果模式有多个组,这将是一个元组的列表.结果中包含空模式匹配,除非他们触及另一个模式匹配的开始.
re.finditer(pattern, string, flags=0)
返回一个迭代器,在字符串中的RE模式的所有非重叠匹配上产生匹配对象.字符串从左到右扫描,并按照找到的顺序返回匹配项.结果中包含空匹配,除非他们触及另一个匹配的开始.
re.sub(pattern, repl, string, count=0, flags=0)
返回通过替换repl替换字符串中最左侧不重叠的pattern的字符串获取的字符串.如果没有找到模式,则字符串不会更改.repl可以是一个字符串或一个函数;如果是字符串,则会处理其中的任何反斜杠转义.
这个接口将在3.7中弃用
prog = re.compile(r"\W+") prog.match("Words, words, words.") 9 re.match('com','comwww.runcomoob') 0re.match('com','comwww.runcomoob') 1 re.match('com','comwww.runcomoob') 2 re.match('com','comwww.runcomoob') 3re.match('com','comwww.runcomoob') 4 re.match('com','comwww.runcomoob') 5re.subn(pattern, repl, string, count=0, flags=0)
执行与sub()相同的操作,但返回一个元组(new_string,number_of_subs_made).
re.escape(pattern)
脱离除ASCII字母,数字和'_'以外的所有字符.如果要匹配任意的可能具有正则表达式元字符的字符串,这将非常有用.
re.match('com','comwww.runcomoob') 6 re.match('com','comwww.runcomoob') 7re.match('com','comwww.runcomoob') 8 re.match('com','comwww.runcomoob') 9 <_sre.SRE_Match object; span=(0, 3), match='com'> 0 <_sre.SRE_Match object; span=(0, 3), match='com'> 1<_sre.SRE_Match object; span=(0, 3), match='com'> 2 <_sre.SRE_Match object; span=(0, 3), match='com'> 3 <_sre.SRE_Match object; span=(0, 3), match='com'> 4re.purge()
清除正则表达式缓存.
1.1. 正则表达式与unicode
python的re模块可以匹配unicode
<_sre.SRE_Match object; span=(0, 3), match='com'> 5 <_sre.SRE_Match object; span=(0, 3), match='com'> 6 <_sre.SRE_Match object; span=(0, 3), match='com'> 7<_sre.SRE_Match object; span=(0, 3), match='com'> 8 <_sre.SRE_Match object; span=(0, 3), match='com'> 9 



还没有评论,来说两句吧...