关于这个正则表达式,我本人也是有点不完全懂,还在继续学习中。
97.re
1.正则表达式:
1.通配符:正则表达式可与多个字符串匹配,可使用特殊字符来创建这种正则表达式
例如:正则表达式'.ython'
与字符串'python'和'jython'
都匹配。它还与'qython'、'+ython'
和' ython'(
第一个字符为空格)等字符串匹配,但不与'cpython'、'ython'
等字符 串匹配,因为句点只与一个字符匹配,而不与零或两个字符匹配。
句点与除换行符外的任何字符都匹配,因此被称为通配符
2.特殊字符进行转义:普通字符只与自己匹配,但特殊字符的情况完全不同
例如:对字符串中的引号进行转义时所做的那样,在它前面加上一个反斜杠。因此,在这 个示例中,可使用模式'python\\.org',
它只与''
匹配。也可以使用原始 字符串,如r'python\.org'
。
3.字符集:用方括号将一个子串括起,创建一个所谓的字符集。而这样的字符集与其包含的 字符都匹配。
例如:'[pj]ython'与'python'和'jython'
都匹配,但不与其他字符串匹配。
例如:'[a-z]'与a~z
的任何字母都匹配。你还可组合多个访问,方法是依次列出它们;例 如'[a-zA-Z0-9]'
与大写字母、小写字母和数字都匹配。
请注意,字符集只能匹配一个字符。
要指定排除字符集,可在开头添加一个^字符,例如'[ ^ abc]'与
除a、b和c外的其 他任何字符都匹配。
4.二选一和子模式:管道字符(|),所需的模式为'python|perl';
当只想用于模式的一部分 的时候,可以这样做:'p(ython|erl)'
5.可选模式和重复模式
re模块中的一些重要内容:
函 数 描 述compile(pattern[, flags])根据包含正则表达式的字符串创建模式对象search(pattern, string[, flags]) 在字符串中查找模式match(pattern, string[, flags]) 在字符串开头匹配模式split(pattern, string[, maxsplit=0])根据模式来分割字符串findall(pattern, string)返回一个列表,其中包含字符串中所有与模式匹配的子串sub(pat, repl, string[, count=0])将字符串中与模式pat匹配的子串都替换为replescape(string) 对字符串中所有的正则表达式特殊字符都进行转义
举例:
>>> array='python'>>> import re>>> re.search('p',array)<_sre.SRE_Match object; span=(0, 1), match='p'>>>> re.match('p',array)<_sre.SRE_Match object; span=(0, 1), match='p'>>>> arrays='htttps://pp.www'>>> re.findall('t',arrays)['t', 't', 't']>>> pat = '[a-zA-Z]+'>>> text = '"Hm... Err -- are you sure?" he said, sounding insecure.'>>> re.findall(pat,text)['Hm', 'Err', 'are', 'you', 'sure', 'he', 'said', 'sounding', 'insecure']>>> re.sub('p','y',arrays)'htttys://yy.www'>>> re.split('[,]+',arrays)['htttps://pp.www']>>> re.split('[.]+',arrays)['htttps://pp', 'www']>>> some_text = 'alpha, beta,,,,gamma delta'>>> re.split('[, ]+', some_text, maxsplit=2)#参数maxsplit指定最多分割多少次。['alpha', 'beta', 'gamma delta']>>> re.split('[, ]+', some_text, maxsplit=1)['alpha', 'beta,,,,gamma delta']>>> re.escape(arrays)'htttps\\:\\/\\/pp\\.www'>>> re.escape('But where is the ambiguity?')'But\\ where\\ is\\ the\\ ambiguity\\?'--------