正则表达式的元素符

import re

print("----------匹配单个字符与数字----------")
r'''
.  匹配除换行符以外的任意字符
[0123456789]        []是字符集合,表示匹配方括号中所有所包含的任意一个字符
[liuwang]           []  匹配‘l','i','u' 中任意一个字符
[a-z]               匹配任意小写字母
[A-Z]               匹配任意大写字母
[0-9]               匹配任意数字,类似[0123456789]  
[0-9a-zA-Z]         匹配任意的数字和字母
[0-9a-zA-Z_]        匹配任意的数字、字母和下划线
[^liuwang]          匹配除了l,i,u,w,a,n,g这几个字母意外的所有字符
中括号中了 ^称为脱字符 表示不匹配集合中的字符
[^0-9]              匹配所有的非数字字符
有 ^ 需要带[]
\d                  匹配数字,效果同[0-9]  
\D                  匹配非数字,效果同[^0-9]  
\w                  匹配数字,字母和下划线,效果同[0-9a-zA-Z_]
\W                  匹配非数字,字母和下划线,效果同[^0-9a-zA-Z_]
\s                  匹配任意的空白符(空格,换行,回车,换页,制表)效果同[ \f\n\r\t]
\S                  匹配任意的非空白符效果同[^  \f\n\r\t]



'''
# print(re.findall("\D","liuwang is handsome6"))


print("----------------锚字符--------------")
'''
^                 行首匹配,和在[]里的^不是一个意思
$                 行尾匹配
\A                匹配字符串开始,它和^的区别是,\A 只匹配整个字符串的开头,即使在re.M模式下也不会匹配它行的行首
\Z                匹配字符串结束,他和$的区别是,\Z 只匹配整个字符串的开头,即使在re.M模式下也不会匹配它行的行尾

\b                匹配一个单词的边界,也就是值单词和空格键的位置,可以匹配never 不能匹配nerve
\B                匹配非单词的边界,

'''

# print(re.search("some","liuwang is handesome"))
# print(re.findall("^liu","liuwang is handesome\nliuwang",re.M))
# print(re.findall("\Aliu","liuwang is handesome\nliuwang",re.M))
#
#
# print(re.search(r"er\b","nerve"))
# print(re.search(r"er\b","nnnever"))
# print(re.search(r"er\B","nnnevre"))
# print(re.search("er\B","nerve"))


print("----------------匹配多个字符--------------")
'''
说明:下方的x、y、z 均为假设的普通字符,不是正则表达式的元字符
(xyz)           匹配小括号内的xyz (作为一个整体去匹配)
x?              匹配0个或者1个x                     #非贪婪匹配
x*              匹配0个或者多个x                    #贪婪匹配
(.* 表示匹配0个或者任意多个字符(换行符除外))
x+              匹配至少一个x                       #贪婪匹配

x{n}            匹配确定的n个x(n是一个非负整数)
x{n,}           匹配至少n个x 
x{n,m}         匹配至少n个最多m个x,注意:n<=m
x|y             |表示或 匹配x或者y
'''
print(re.findall(r"a?", "aaa"))#非贪婪匹配(尽可能少的匹配)
print(re.findall(r"a*", "aaabaa"))#贪婪匹配(尽可能多的匹配)
print(re.findall(r"a+", "aaabaaaaaa"))#贪婪匹配(尽可能多的匹配)
print(re.findall(r"a{3}", "aaabaa"))
print(re.findall(r"a{3,}", "aaaaabaaa"))#贪婪匹配(尽可能多的匹配)
print(re.findall(r"a{3,6}", "aaaabaaa"))
print(re.findall(r"((s|S)unck)", "sunck--SuNck"))


#需求,提取sunck...man
str = " sunck is a good man ! sunck is a nice man!sunck is a very handesome man"
print(re.findall(r"(sunck.*?man$)",str))


print("-------------特殊---------------")
'''
*?   +?   ??最小匹配   通常都是尽可能多的模式,可以使用这种解决贪婪匹配

(?:x)    类似(xyz)但不表示一个组
'''
#注释/* part1    */    */  part2   */
print(re.findall(r"//*.*/*/",r"/* part1    */    */  part2   */"))






猜你喜欢

转载自blog.csdn.net/qq_41856814/article/details/89489065