Python(re_char_learning)

"""
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位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值