正则表达式
需要导入模块
import re
小写w
匹配字母(包含中文)或数字或下划线
#例子如下
import re
print(re.findall('w','SkyRabbit()66'))
#输出结果
['S','k','y','R','a','b','i','t','6','6']
大写w
匹配非字母(包含中文)或数字或下划线
#例子如下
import re
print(re.findall('W','SkyRabbit()66'))
#输出结果
['(',')']
小写s
匹配任意的空白符
#例子如下
import re
print(re.findall('s','SkyRabbit() n66'))
#输出结果
[' ','n']
大写S
匹配任意非空白符
#例子如下
import re
print(re.findall('S','SkyRabbit() n66'))
#输出结果
['S','(',')','6']
小写d
匹配数字
#例子如下
import re
print(re.findall('d','SkyRabbit() n66'))
#输出结果
['6','6']
大写d
p匹配非数字
#例子如下
import re
print(re.findall('D',' ','n']
大写A
从字符串开头匹配
#例子如下
import re
print(re.findall('ASky','SkyRabbit() n66'))
#输出结果
['Sky']
^
匹配字符串的开始
#例子如下
import re
print(re.findall('^Sky','SkyRabbit() n66'))
#输出结果
['Sky']
大写Z
匹配字符串的结束,如果是换行,只匹配到换行前的结果
#例子如下
import re
print(re.findall('666Z','SkyRabbit n666'))
#输出结果
['666']
小写z与$ 索引字符串以外的
. ? * + {m,n} .* .*?
重复匹配
#例子如下
import re
# . 匹配任意字符,除了换行符(re.DOTALL 这个参数可以匹配n)。
# print(re.findall('a.b','ab aab a*b a2b a牛b anb')) # ['aab','a*b','a2b','a牛b']
# print(re.findall('a.b','ab aab a*b a2b a牛b anb',re.DOTALL)) # ['aab','a牛b']
# ?匹配0个或者1个由左边字符定义的片段。
# print(re.findall('a?b','ab aab abb aaaab a牛b aba**b')) # ['ab','ab','b']
# * 匹配0个或者多个左边字符表达式。 满足贪婪匹配 @@
# print(re.findall('a*b','ab aab aaab abbb')) # ['ab','aab','aaab','b']
# print(re.findall('ab*','ab aab aaab abbbbb')) # ['ab','abbbbb']
# + 匹配1个或者多个左边字符表达式。 满足贪婪匹配 @@
# print(re.findall('a+b','ab']
# {m,n} 匹配m个至n个左边字符表达式。 满足贪婪匹配 @@
# print(re.findall('a{2,4}b','ab aab aaab aaaaabb')) # ['aab','aaab']
# .* 贪婪匹配 从头到尾.
# print(re.findall('a.*b','ab aab a*()b')) # ['ab aab a*()b']
# .*? 此时的?不是对左边的字符进行0次或者1次的匹配,# 而只是针对.*这种贪婪匹配的模式进行一种限定:告知他要遵从非贪婪匹配 推荐使用!
# print(re.findall('a.*?b','ab a1b a*()b,aaaaaab')) # ['ab','a1b','a*()b']
# []: 括号中可以放任意一个字符,一个中括号代表一个字符
# - 在[]中表示范围,如果想要匹配上- 那么这个-符号不能放在中间.
# ^ 在[]中表示取反的意思.
# print(re.findall('a.b','a1b a3b aeb a*b arb a_b')) # ['a1b','a3b','a4b','arb','a_b']
# print(re.findall('a[abc]b','aab abb acb adb afb a_b')) # ['aab','abb','acb']
# print(re.findall('a[0-9]b','a3b']
# print(re.findall('a[a-z]b','a1b a3b aeb a*b arb a_b')) # ['aeb','arb']
# print(re.findall('a[a-zA-Z]b','aAb aWb aeb a*b arb a_b')) # ['aAb','aWb','aeb','arb']
# print(re.findall('a[0-9][0-9]b','a11b a12b a34b a*b arb a_b')) # ['a11b','a12b','a34b']
# print(re.findall('a[*-+]b','a-b a*b a+b a/b a6b')) # ['a*b','a+b']
# - 在[]中表示范围,如果想要匹配上- 那么这个-符号不能放在中间.
# print(re.findall('a[-*+]b','a-b a*b a+b a/b a6b')) # ['a-b','a+b']
# print(re.findall('a[^a-z]b','acb adb a3b a*b')) # ['a3b','a*b']