python3全部的正则表达式特殊符号及用法的代码例子和注释

import re  # 引入re模块

# . (点号)表示匹配除换行符之外的任意单个字符
pattern1 = re.compile(r"r..n")
match1 = pattern1.search("The rain in Spain falls mainly on the plain.")
print(match1.group())  # 输出"rain"

# ^ (脱字符)表示匹配字符串的开头
pattern2 = re.compile(r"^Hello")
match2 = pattern2.search("Hello, world!")
print(match2.group())  # 输出"Hello"

# $ (美元符号)表示匹配字符串的结尾
pattern3 = re.compile(r"world!$")
match3 = pattern3.search("Hello, world!")
print(match3.group())  # 输出"world!"

# * (星号)表示匹配前面的表达式零次或多次
pattern4 = re.compile(r"ab*c")
match4 = pattern4.search("ac")
print(match4.group())  # 输出"ac"

# + (加号)表示匹配前面的表达式一次或多次
pattern5 = re.compile(r"ab+c")
match5 = pattern5.search("abc")
print(match5.group())  # 输出"abc"

# ? (问号)表示匹配前面的表达式零次或一次
pattern6 = re.compile(r"ab?c")
match6 = pattern6.search("ac")
print(match6.group())  # 输出"ac"

# {m,n}表示匹配前面的表达式m次至n次,包括m和n
pattern7 = re.compile(r"a{2,4}")
match7 = pattern7.search("aaa")
print(match7.group())  # 输出"aa"

# []表示匹配方括号内的任意一个字符
pattern8 = re.compile(r"[abc]")
match8 = pattern8.search("defabcghi")
print(match8.group())  # 输出"a"

# | (管道符号)表示匹配左右两侧任意一个表达式
pattern9 = re.compile(r"dog|cat")
match9 = pattern9.search("I have a cat and a dog.")
print(match9.group())  # 输出"cat"

# \d表示匹配任意一个数字字符
pattern10 = re.compile(r"\d")
match10 = pattern10.search("I am 18 years old.")
print(match10.group())  # 输出"1"

# \D表示匹配任意一个非数字字符
pattern11 = re.compile(r"\D")
match11 = pattern11.search("I am 18 years old.")
print(match11.group())  # 输出"I"

# \s表示匹配任意一个空白字符(包括空格、制表符、换行符等)
pattern12 = re.compile(r"\s")
match12 = pattern12.search("Hello\tworld!\n")
print(match12.group())  # 输出"\t"

# \S表示匹配任意一个非空白字符
pattern13 = re.compile(r"\S")
match13 = pattern13.search("Hello\tworld!\n")
print(match13.group())  # 输出"H"

# \w表示匹配任意一个字母、数字或下划线字符
pattern14 = re.compile(r"\w")
match14 = pattern14.search("Hello, world!")
print(match14.group())  # 输出"H"

# \W表示匹配任意一个非字母、数字或下划线字符
pattern15 = re.compile(r"\W")
match15 = pattern15.search("Hello, world!")
print(match15.group())  # 输出",""

# \b表示匹配一个单词边界(即单词与空格之间的位置)
pattern16 = re.compile(r"\bworld\b")
match16 = pattern16.search("Hello, world!")
print(match16.group())  # 输出"world"

# \B表示匹配一个非单词边界
pattern17 = re.compile(r"\Bor\B")
match17 = pattern17.search("Hello, world!")
print(match17.group())  # 输出"or"

# ()表示匹配括号内的表达式,并捕获匹配的文本
pattern18 = re.compile(r"(Hello )world")
match18 = pattern18.search("Hello world")
print(match18.group())  # 输出"Hello world"

# (?:)表示匹配括号内的表达式,但不捕获匹配的文本
pattern19 = re.compile(r"(?:Hello )world")
match19 = pattern19.search("Hello world")
print(match19.group())  # 输出"Hello world"

# (?P<name>)表示匹配括号内的表达式,并将其命名为name
pattern20 = re.compile(r"(?P<first>\w+) (?P<last>\w+)")
match20 = pattern20.search("John Doe")
print(match20.group("first"))  # 输出"John"
print(match20.group("last"))  # 输出"Doe"

# (?P=name)表示引用前面命名为name的子组所匹配的文本
pattern21 = re.compile(r"(?P<word>\w+) (?P=word)")
match21 = pattern21.search("hello hello")
print(match21.group())  # 输出"hello hello"

# (?=)表示匹配后面紧跟着的表达式,但不消耗匹配的文本
pattern22 = re.compile(r"Hello (?=world)")
match22 = pattern22.search("Hello world")
print(match22.group())  # 输出"Hello "

# (?!)表示匹配后面不紧跟着的表达式
pattern23 = re.compile(r"Hello (?!world)")
match23 = pattern23.search("Hello Alice")
print(match23.group())  # 输出"Hello "

# (?<=)表示匹配前面紧靠的表达式,并且返回紧靠位置后面的文本
pattern24 = re.compile(r"(?<=Hello )world")
match24 = pattern24.search("Hello world")
print(match24.group())  # 输出"world"

# (?<!)表示匹配前面不紧靠的表达式
pattern25 = re.compile(r"(?<!Hello )world")
match25 = pattern25.search("Hi world")
print(match25.group())  # 输出"world"
# (?(id/name)yes|no)表示如果存在名为id或name的组,则匹配yes,否则匹配no
pattern26 = re.compile(r"(?P<word>\w+) (?(word)hello|goodbye)")
match26 = pattern26.search("world goodbye")
print(match26.group())  # 输出"world goodbye"

# \number表示引用前面编号为number的子组所匹配的文本
pattern27 = re.compile(r"(\w+) \1")
match27 = pattern27.search("hello hello")
print(match27.group())  # 输出"hello hello"