正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE),又称正规示意式、正规示意法、正规表达式、划定规矩表达式、通例示意法,是计算机科学的一个观点。正则表达式运用单个字符串来形貌、婚配一系列婚配某个句法划定规矩的字符串。在许多文本编辑器里,正则表达式通常被用来检索、替代那些婚配某个情势的文本。
正则表达式划定规矩,单字符婚配
字符 | 功用 | 正则表达式示例 | 相符婚配示例 |
---|---|---|---|
. | 婚配恣意一个字符(除了n) | b.b | bab,b2b |
[ ] | 婚配来自[]中字符集的恣意一个字符 | i [abCde]m | i am |
\d | 婚配任何十进制数字,与[0-9]一致 | w\dcschool | w3cschool |
\D | 婚配非数字,即不是数字 | mou\Dh | mouth |
\s | 婚配任何空格字符,与[\n\t\r\v\f]雷同 | i\slike | i like |
\S | 婚配任何非空缺字符,与\s相反 | n\Se | noe,n3e |
\w | 婚配任何字母数字字符,与[A-Za-z0-9_]雷同 | [A-Za-z]w+ | |
\W | 婚配非单词字符 | [0-9]\W[A-Z] | 3 A |
示意数目婚配
字符 | 功用 | 正则表达式示例 | 相符婚配的示例 | |
---|---|---|---|---|
* | 婚配0次或许屡次前面涌现的正则表达式,即可有可无 | a* | aaa | |
+ | 婚配前一个字符涌现1次或许无限次,即最少有一次 | a+ | aaa | |
? | 婚配前一个字符涌现1次或许0次,要么有一次,要么没有 | a? | a或许b | |
{m} | 婚配前一个字符涌现m次 | [0-9]{5} | 12345 | |
{m.} | 婚配前一个字符最少涌现m次 | a{5.} | aaaaa | |
{m,n} | 婚配前一个字符涌现从m到n次 | a{2,6} | aaa |
示意边境婚配
字符 | 功用 | 正则表达式示例 |
---|---|---|
^ | 婚配字符串肇端部份 | ^Dear |
$ | 婚配字符串停止部份 | fi$ |
b | 婚配任何单词的边境 | \bThe\b |
B | 婚配非单词边境 | .*\Bver\ |
婚配分组
字符 | 功用 | |
---|---|---|
\ | 婚配摆布恣意一个表达式 | |
(ab) | 将括号中字符作为一个分组 | |
\num | 援用分组num婚配到的字符串 | |
(?P<name>) | 分组起别号 | |
(?P=name) | 援用别号为name分组婚配到的字符串 |
re模块
在python中,可以运用内置的re模块来运用正则表达式
re模块罕见的函数和要领
中心函数 | 申明 |
---|---|
compile(pattern,flags=0) | 运用任何可选的标记来编译正则表达式的情势,然后返回一个正则表达式对象 |
re模块函数和正则表达式对象要领 | 申明 |
---|---|
match(pattern,string,flags=0) | 尝试运用带有可选的标记的正则表达式的情势来婚配字符串。假如婚配胜利,就返回婚配对象; 假如失利,就返回 None |
search(pattern,string,flags=0) | 运用可选标记搜刮字符串中第一次涌现的正则表达式情势。 假如婚配胜利,则返回婚配对象; 假如失利,则返回 None |
findall(pattern,string,[,flags]) | 查找字符串中一切涌现的正则表达式,并返回一个列表 |
split(pattern,string,max=0) | 依据正则表达式的情势分隔符,spilt函数将字符串支解为列表,然后返回胜利婚配的列表,支解最多操纵max次(默许支解一切婚配胜利的位置) |
sub(pattern,repl,string,count=0) | 运用repl替代一切正则表达式的情势在字符串中涌现的位置,除非定义count,不然就将替代一切涌现的位置 |
经常使用的婚配对象要领 | 申明 |
---|---|
group(num=0) | 默许返回悉数婚配对象或许返回编号为num的特定子组 |
groups(default=None) | 返回一个包括一切婚配子组的元组,假如没有胜利婚配,返回一个空元组 |
span() |
经常使用的模块属性,大多数用于对正则表达式函数的润饰 | 申明 |
---|---|
re.I | 使婚配对大小写不敏感(疏忽大小写) |
re.S | .(点号)婚配除了n以外的一切字符,re.S标记示意.(点号)可以婚配悉数字符 |
re.M | 多行婚配,影响^和$ |
re.U | 依据Unicode字符集剖析字符。影响\w,\W,\b和\B |
re.X | 该标志经由过程赋予你更天真的花样以便你讲正则表达式写得更易于明白 |
re模块平常的运用要领
运用
compile()
函数将正则表达式的字符串情势编译为一个正则表达式对象;经由过程正则表达式对象供应的一系列要领(如:
match()
)对文本举行婚配查找,取得婚配效果,一个Match
对象;末了运用
Match
对象供应的属性和要领(比方:group()
)取得信息,依据须要举行其他的操纵。
re模块运用示例
导入模块
import re
compile()
函数
compile 函数用于编译正则表达式,生成一个 Pattern 对象,它的平常运用情势以下:
import re # 将正则表达式编译成pattern对象 pattern = re.compile(r'\d+')
编译成正则表达式对象后,就可以运用上面所说的正则表达式对象要领了。
match()
要领
match 要领用于查找字符串的头部(也可以指定肇端位置),它是一次
婚配,只需找到了一个婚配的效果就返回,而不是查找一切婚配的效果。它的平常运用情势以下:
match(string[, pos[, endpos]])
个中,string是待婚配的字符串,pos 和 endpos 是可选参数,指定字符串的肇端
和尽头
位置,默许值分别是 0 和 len
(字符串长度)。因而,当你不指定 pos 和 endpos 时,match 要领默许婚配字符串的头部。
当婚配胜利时,返回一个 Match 对象,假如没有婚配上,则返回 None。
>>> import re >>> >>> pattern = re.compile(r'\d+') # 正则表达式示意婚配最少一个数字 >>> >>> m = pattern.match("one2three4") # match默许从开首最先婚配,开首是字母o,所以没有婚配胜利 >>> print(m) # 婚配失利返回None None >>> >>> m = pattern.match("1two3four") # 开首字符是数字,婚配胜利 >>> print(m) <_sre.SRE_Match object; span=(0, 1), match='1'> >>> >>> m.group() # group()要领猎取婚配胜利的字符 '1' >>> m = pattern.match("onetwo3four56",6,12) # 指定match从数字3最先查找,第一个是数字3,婚配胜利 >>> print(m) <_sre.SRE_Match object; span=(6, 7), match='3'> >>> m.group() '3'
以上就是python中re模块与正则表达式的引见(附代码)的细致内容,更多请关注ki4网别的相干文章!