Re——正则表达式_匹配项(pattern) and 模式(flag)
匹配项(pattern):
1、 (?=…) —> 如果匹配……匹配next,但不使用任何字符串。这称为前向断言。
eg: >>> r = re.search('def(?=abc)','defabc')
>>> r.group()
'def'
/* 注: 这个也是条件匹配只不过条件紧挨着要匹配字符串的后面!
2、(?!..) —> 如果匹配……不匹配。这是一个否定的前向断言。
eg: >>> r = re.search('def(?!abc)','defacc')
>>> r.group()
'def'
2、(pattern_1)?(pattern_2)?(?(pattern_name(1、2……))yes|no) —> 例如表示如果pattern_name=pattern_1 则当pattern_1在子字符串
出现时则(?(pattern_name)yes|no)去查找字符串后面出现的yes,
否则则去查找字符串后面出现的no
eg: >>> re.search('(12)? (?(1)12|)','12 12')
<_sre.SRE_Match object; span=(0, 5), match='12 12'>
3、 (?<=…) —> 如果字符串中的当前位置前面有一个匹配的for…在当前位置结束。
eg: >>> m = re.search('(?<=abc)def', 'abcdef')
>>> m.group(0)
'def'
4、(?<!..) —> 如果字符串中的当前位置前面没有匹配for…则匹配。
eg: >>> m = re.search('(?!<abc)def','assdef')
>>> m.group()
'def'
5、 (?#…) —> 评论;括号中的内容将被忽略。
6、 正则表达式中r’‘表示(字符) eg: \n 不是转义字符回车,从而更好地匹配,如果不用r’'则不使用转义字符时使用//(字符)
eg: ‘\\w’ —> 匹配一个字符
eg: >>> r = re.search('(\w+\b)+','foo.')
>>> type(r)
<class 'NoneType'>
------分割符------
>>> r = re.search(r'(\w+\b)+','foo.')
>>> r.group()
'foo'
------分割符------
>>> r = re.search('(\w+\\b)+','foo.')
>>> r.group()
'foo'
/* 注: 如果/(字符)在系统中无转义符意义,则不用\(字符)
eg: \w 和 \w 在正则表达式中匹配的效果一样,而\b 和 \b 不同。
如下为转义字符:
\a \b \f \n
\r \t \u \U
\v \x \
7、\number —> 匹配叠词
eg: >>> re.search(r'(\w+)\1','thethe')
<_sre.SRE_Match object; span=(0, 6), match='thethe'>
8、\b —> 匹配空字符串,但仅在单词的开头或结尾。单词被定义为Unicode字母数字或下划线字符的序列,因此单词的结尾由空格或非字母数字、非下划线Unicode字符表示。
9、\B —> 匹配空字符串,但仅当它不在单词的开头或结尾时才匹配。
10、\d —> 匹配任何Unicode十进制数字(即Unicode字符类别[Nd]中的任何字符)。
11、 \D —> 匹配任何非Unicode十进制数字的字符。这是\d的反义词。
12、 \s —> 匹配Unicode空白字符(其中包括[\t\n\r\f\v],以及许多其他字符,例如许多语言中排版规则强制要求的不间断空格)。如果使用ASCII标志,则只匹配[\t\n\r\f\v]。
13、\S —> 匹配任何非Unicode空白字符。这是\s的反义词。
14、 \w —> 匹配Unicode单词字符;这包括任何语言中可以作为单词一部分的大多数字符,以及数字和下划线。如果使用ASCII标志,则只匹配[a- za - z0 -9_]
15、\W —> 匹配任何非Unicode单词字符。这是\w的反义词。
如果使用ASCII标志,它就相当于[^a- za - z0 -9_]
16、\A —> 仅在字符串的开头匹配。
17、\Z —> 仅在字符串末尾匹配。
模式(flag):
1、 re.A(只匹配ascii)
—> 使\w、\w、\b、\b、\d、\d、\s和\s只执行ascii匹配,而不执行完整的Unicode匹配。这只对Unicode模式有意义,而对字节模式则忽略不计。
2、 re.I(忽略字母大小写)
3、 re.DEBUG
—> 显示有关已编译表达式的调试信息。
4、 re.S/re.DOTALL
—> 使’.'特殊字符匹配任何字符,包括换行;没有这个flag,
'.'将匹配除换行以外的任何内容。
5、 re.L(语言环境相关)
6、 re.M/MULTILINE(多行)
—> 当指定时,模式字符’^'匹配字符串的开头和每行的开头(紧接每行换行之后);模式字符“$”匹配字符串的末尾和每行的末尾(紧接在每行换行之前)。
7、 re.X(详细)
—> 可视化操作,不是太重要,具体件PythonDocs
————2020年4月12日 XXX