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.")
0
prog = re.compile(r"\W+") prog.match("Words, words, words.")
1
prog = re.compile(r"\W+") prog.match("Words, words, words.")
2
prog = re.compile(r"\W+") prog.match("Words, words, words.")
3
prog = re.compile(r"\W+") prog.match("Words, words, words.")
4
prog = re.compile(r"\W+") prog.match("Words, words, words.")
5
prog = re.compile(r"\W+") prog.match("Words, words, words.")
6
prog = re.compile(r"\W+") prog.match("Words, words, words.")
7
prog = re.compile(r"\W+") prog.match("Words, words, words.")
8
re.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')
0
re.match('com','comwww.runcomoob')
1
re.match('com','comwww.runcomoob')
2
re.match('com','comwww.runcomoob')
3
re.match('com','comwww.runcomoob')
4
re.match('com','comwww.runcomoob')
5
re.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')
7
re.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'>
4
re.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
还没有评论,来说两句吧...