import re


# 匹配:判断字符串是否以【正则表达式描述的样式pattern】开头
def reMatch():
    pattern = "[Pp]ython"
    str1 = "天不生python,世间万古如长夜"
    str2 = "python一出谁与争疯"
    str3 = "Python一出谁与争疯"
    resobj = re.match(pattern, str1)
    resobj = re.match(pattern, str2)
    resobj = re.match(pattern, str3)
    print(resobj)


# 检索字符串中是否包含【正则样式pattern】,只会检索到第一个
def reSearch():
    pattern = "[Pp]ython"
    str1 = "天不生python,世间万古如长夜"
    str2 = "python一出谁与争疯"
    str3 = "天不生python,世间万古如长夜;农不务Python,地头一篇荒草丛;劳资不学拍森,劳资吃什么!"
    resobj = re.search(pattern, str1)
    resobj = re.search(pattern, str2)
    resobj = re.search(pattern, str3)
    print(resobj)


# 从字符串中检索出全部满足【正则样式patten】的子串,形成列表
def reFindall():
    pattern = "[Pp]ython|拍森|派森"
    str1 = "天不生python,世间万古如长夜"
    str2 = "Python一出谁与争疯"
    str3 = "天不生python,世间万古如长夜;农不务Python,地头一篇荒草丛;劳资不学拍森,劳资吃什么!派森真牛逼~"
    reslist = re.findall(pattern, str1)
    reslist = re.findall(pattern, str2)
    reslist = re.findall(pattern, str3)
    print(reslist)


# 将字符串中满足【正则样式pattern】的子串全部替换为指定字符串,
# 并返回替换后的新字符串
'''
re.sub(pattern, repl, string, count=0, flags=0)
参数:
    pattern : 正则中的模式字符串。
    repl : 替换的字符串,也可为一个函数。
    string : 要被查找替换的原始字符串。
    count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配
'''


def reSub():
    pattern = "[Pp]ython|拍森|派森"
    str1 = "天不生python,世间万古如长夜;农不务Python,地头一片荒草丛;劳资不学拍森,劳资吃什么!派森真牛逼~"
    # 把str1中满足pattern样式的子串全部替换为"【大拍森】",返回替换后的结果字符串
    resstr = re.sub(pattern, "【大拍森】", str1)
    print(resstr)


# 结果子串及其位置
def groupAndSpan():
    pattern = "[Pp]ython"
    str1 = "python一出谁与争锋"
    print(re.match(pattern, str1).group())  # 满足样式的子串python
    print(re.match(pattern, str1).span())  # 子串出现的位置(0, 6)


# 检索第一个子串出现的位置
def searchSpan():
    pattern = "[Pp]ython"
    str1 = "一出python,谁与争锋"
    print(re.search(pattern, str1).span())


# 样式分组,分组子串,分组子串位置
def groupAndSpanWithGroupIndex():
    # 包含分组的正则样式
    pattern = "(.*)( are )(.*)"
    str1 = "Cats are smarter than dogs"
    print(re.match(pattern, str1))
    # 全部子串
    print(re.match(pattern, str1).group())
    # 样式中【第n组对应的子串】
    print(re.match(pattern, str1).group(1))
    print(re.match(pattern, str1).group(2))
    print(re.match(pattern, str1).group(3))
    # 全部子串对应的位置跨度
    print(re.match(pattern, str1).span())
    # 样式中【第n组对应的子串】对应的位置
    print(re.match(pattern, str1).span(1))
    print(re.match(pattern, str1).span(2), "=====")
    print(re.match(pattern, str1).span(3))


if __name__ == "__main__":
    # reMatch()
    # reSearch()
    # reFindall()
    reSub()

    print("main over")

results matching ""

    No results matching ""