import re
# 找普通字符
findall = re.findall('p', 'python')
print(findall)
# \d:所有数字
# \D:所有非数字
# \w:包含下划线的 0-9 a-z A-Z
# \W:\w的取反,代表特殊字符
# \s:空白符,制表符,换行符
# \S:非\s
# 元字符
# []:匹配一个字符,括号内的字符是或者的关系 ---> [123]--> 1 2 3中的一个
# ^在[] 代表取反的意思 [\d]=[^\D]
# [1-7] 代表1 2 3 4 5 6 7
# ()代表分组
# 重复匹配
# {n} 表示前面的字符重复n次 \d{3} : 代表出现3个数字
# {n,m} 最少出现n次,最多出现m次 \d{2,5} -->2-5位的数字字串
# {n,}
# {,m}
# ? 代表前面的字符出现0次或者1次===={0,1}
# + 至少出现一次 ===={1,}
# * 表示前面的字符出现0次或者任意次
# . 除换行符 \n 之外的任何单字符
# 贪婪匹配
# 找到最大条件的子串
# {2,5}? -->非贪婪
re_findall = re.findall(r"\d{2,5}?", "123456789")
print(re_findall)
str = "<td>python</td>" \
"<td>{}:L#$@</td" \
"><td>##@!&asdfa</td>"
# () 只抓去()内部的知识 . 表示除换行的所有字符,+ 表示出现一次或者多次,?表示非贪婪
print(re.findall(r"<td>(.+?)</td>", str))
# 反向引用
wordStr = """ 'python' "hello" 'dadfjava" "daf' """
# 查找 '' 或者 "" 中的内容
# (\1) 表示引用第一次()出现的值
list = re.findall(r"('|\")(\w+)(\1)", wordStr)
print([x[1] for x in list])
# 校验密码
# 122223
# 第一个分组(\d)表明出现一位数字,第二个分组(\1{2,}) \1 表示第一次分组的结果,出现2次或者多次
# ===一共出现3次以上
print(re.findall(r"(\d)(\1{2,})", "122223"))
# [('2', '222')]
# 位置匹配
# ^ $
# ^\d{11}$ -> 从字符串开头到结尾就只有11位数字
正则表达式基本的语法
最新推荐文章于 2023-04-17 21:10:41 发布