import re
#正则表达式是用来匹配字符串的,是一种小型的语言,和列表字典没有任何关系,仅仅是操作字符串,引入正则表达式主要是为了模糊匹配
s = "Process finished with exit code"
#元字符
# .:点号,任意单个字符,但是不能匹配换行符,且只能代指一个字符
# ^:尖角号,是行首匹配,只从行首开始匹配
# $:美元符,是行尾匹配,只从行尾开始匹配
# *:星号,次数匹配,匹配前面的字符0次或者多次,默认匹配是贪婪匹配的
# {n,m}:次数匹配,匹配前面的单个字符最少n次,最多m次
# {n}:匹配前面的单个字符n次
# +:匹配前面的单个字符至少一次
# ?:匹配前面的单个字符0次或者1次
# []:中括号,匹配中括号中的任意单个字符,但是有三个字符是例外
# -中划线,表示一个范围,比如1-9表示1到9之间的任意一个数字
# ^尖角号,表示取反,匹配任意一个不属于括号中的字符
# /
# /:和元字符搭配使用,表示脱意符,表示元字符不代表特殊的意思,只表示一个普通的字符
# 和普通字符搭配使用,表示特殊的意义,比如下面的例子
# /d:表示任意一个数字
# /D:表示任意一个非数字
# /w:表示任意一个字母或者数字
# /W:表示任意一个非字母或者非数字
# /s:表示任意空白字符
# /S:表示任意一个非空白字符
# /b:表示匹配任意一个单词的边界,任意的特殊字符都被认做单词的边界
#
# ():表示一个分组
# |: 表示或,代表匹配竖线左右的两端的字符串
print(re.findall("he..o","hello world,hello again"))
print(re.findall("^he..o","hello world,hello again"))
print()
#findall方法:返回所有匹配到的结果,然后返回到一个列表中
# 参数:
# pattern:规则
# string:要匹配的字符串
# flag:标志位,修改默认规则的,一般不用
# search方法:
# 如果匹配上,则返回一个match的对象,这个对象可以调用group方法来返回匹配的字符串
# 返回匹配到的第一个对象
# match方法:
# 如果匹配上,则返回一个对象,如果匹配不上,则返回none
# 只在字符串最开始的时候开始匹配
#
# split方法:分割字符串
print(re.split("[ad]","1a122dba444"))
# 先用a来分割,分割好后,在用d来分割
# sub方法:替换字符串,第一个是规则,第二个是规则匹配到的字符串替换的内容,第三个是字符串
print(re.sub("a..x","zabcdef","alexaaaaaaaaaaaaa"))
print(re.findall("/.com","www.cctv.com"))
# re.compile():可以把一个正则表达式编译为一个对象,其他re的方法如果也需要这个规则匹配,那么直接调用这个对象即可
obj = re.compile("/.com")
# 那么其他re的方法就可以直接用这个编译好的对象了
# obj.findall()
# obj.sub()
# obj.search()
# obj.match()
# obj.split()
s = "1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*564/14))-(-4*3)/(16-3*2))"
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20851.html