"""
re的特殊字符:
. :(点) 在默认模式,匹配除了换行的任意字符。如果指定了标签 DOTALL ,它将匹配包括换行符的任意字符。
^: 匹配字符串的开头, 并且在 MULTILINE 模式也匹配换行后的首个符号。
$: 匹配字符串尾或者在字符串尾的换行符的前一个字符,在 MULTILINE 模式下也会匹配换行符之前的文本。
*: 对它前面的正则式匹配0到任意次重复, 尽量多的匹配字符串
+: 对它前面的正则式匹配1到任意次重复, 尽量多的匹配字符串
?: 对它前面的正则式匹配0到1次重复, 尽量多的匹配字符串
*, +, ?: 尽量多的去匹配, 贪婪模式
*?, +?, ??: 都是在贪婪模式后边加了?,代表非贪婪模式
尽量少的去匹配
{m}:对其之前的正则式指定匹配 m 个重复: 指定你重复的固定次数
{m,n}: 对正则式进行 m 到 n 次匹配,在 m 和 n 之间取尽量多
{m,}: 对正则式进行最少m次匹配,尽量多的去取
{m,n}?: 对正则式进行 m 到 n 次匹配, 尽量少的去取
\:转义特殊字符
[]: 用于表示一个字符集合: [abc]: 去匹配a, b, c
去匹配集合中一个字符
[0-9][a-z][A-Z]
|: A|B, A 和 B 可以是任意正则表达式,匹配 A 或者 B
由 '\' 和一个字符组成的特殊序列
\A: 只匹配字符串的开始, \A不是真正去匹配的字符
作为一个限制条件: hello world => ^hello
\Ahello
字符串必须是以hello开始的
\d: 代表匹配的是0-9数字,[0-9]
"""
import re
pattern = "."
str_data1 = "1"
str_data2 = "A"
str_data3 = "a"
str_data4 = "中"
str_data5 = "*"
str_data6 = "\n"
print(re.match(pattern, str_data1))
print(re.match(pattern, str_data2))
print(re.match(pattern, str_data3))
print(re.match(pattern, str_data4))
print(re.match(pattern, str_data5))
print(re.match(pattern, str_data6, re.DOTALL))
pattern = "^123"
str_data = "1123"
print(re.search(pattern, str_data))
pattern = "123$"
str_data = "11234"
print(re.search(pattern, str_data))
pattern = "^123$"
str_data = "123\n"
print(re.search(pattern, str_data))
pattern = "a*"
str_data = "bb"
print(re.search(pattern, str_data))
pattern = "a+"
str_data = "bb"
print(re.search(pattern, str_data))
pattern = "ab+" # a(b+) # 代表b重复任意次到多次
str_data = "aaaaaabbaaaaa"
str_data2 = "ababababab"
print(re.search(pattern, str_data))
print(re.search(pattern, str_data2))
pattern = "a?"
str_data2 = "aaaa"
str_data = "bbb"
print(re.search(pattern, str_data))
print(re.search(pattern, str_data2))
pattern = "a*?"
str_data = "aaaa"
print(re.search(pattern, str_data))
pattern = "a+?"
str_data = "aaaa"
print(re.search(pattern, str_data))
pattern = "a??"
str_data = "aaaa"
print(re.search(pattern, str_data))
pattern = "a{5}"
str_data = "aaaa"
str_data2 = "aaaaaa"
print(re.search(pattern, str_data))
print(re.search(pattern, str_data2))
pattern = "a{5,8}"
str_data = "aaaaaa"
print(re.search(pattern, str_data))
pattern = "a{5,}"
str_data = "aaaaaaaaaaaaaaaaaaa"
print(re.search(pattern, str_data))
pattern = "a{5,8}?"
str_data = "aaaaaa"
print(re.search(pattern, str_data))
str_data = "123"
pattern = "[123]"
print(re.search(pattern, str_data))
str_data = "23"
pattern = "1|2"
print(re.search(pattern, str_data))
str_data = "hello"
pattern = "\Ahello"
print(re.search(pattern, str_data))
str_data = "123456789"
pattern = "\d+"
print(re.search(pattern, str_data))
#1.匹配你的手机号:
# 第一位只能是1
# 第二位不能是: 1, 2
# 手机的位数是11位:
# 怎么去验证你写的正则表达式呢:
# 不是1开始的,第二是1,2,9位或者10位,或者12位
#2.匹配QQ号:
# 第一位不能为0
# qq号长度5-10位
Python(re_char_learning)
最新推荐文章于 2024-11-04 21:51:40 发布