正则表达式
需要导入模块
import re
小写w
匹配字母(包含中文)或数字或下划线
#例子如下
import re
print(re.findall('w','SkyRabbit()66'))
#输出结果
['S', 'k', 'y', 'R', 'a', 'b', 'b', 'i', 't', '6', '6']
大写w
匹配非字母(包含中文)或数字或下划线
#例子如下
import re
print(re.findall('W','SkyRabbit()66'))
#输出结果
['(', ')']
小写s
匹配任意的空白符
#例子如下
import re
print(re.findall('s','SkyRabbit()
66'))
#输出结果
[' ', '
']
大写S
匹配任意非空白符
#例子如下
import re
print(re.findall('S','SkyRabbit()
66'))
#输出结果
['S', 'k', 'y', 'R', 'a', 'b', 'b', 'i', 't', '(', ')', '6', '6']
小写d
匹配数字
#例子如下
import re
print(re.findall('d','SkyRabbit()
66'))
#输出结果
['6', '6']
大写d
p匹配非数字
#例子如下
import re
print(re.findall('D','SkyRabbit()
66'))
#输出结果
['S', 'k', 'y', 'R', 'a', 'b', 'b', 'i', 't', '(', ')', ' ', '
']
大写A
从字符串开头匹配
#例子如下
import re
print(re.findall('ASky','SkyRabbit()
66'))
#输出结果
['Sky']
^
匹配字符串的开始
#例子如下
import re
print(re.findall('^Sky','SkyRabbit()
66'))
#输出结果
['Sky']
大写Z
匹配字符串的结束,如果是换行,只匹配到换行前的结果
#例子如下
import re
print(re.findall('666','SkyRabbit
666'))
#输出结果
['666']
小写z与$ 索引字符串以外的
. ? * + {m,n} .* .*?
重复匹配
#例子如下
import re
# . 匹配任意字符,除了换行符(re.DOTALL 这个参数可以匹配
)。
# print(re.findall('a.b', 'ab aab a*b a2b a牛b a
b')) # ['aab', 'a*b', 'a2b', 'a牛b']
# print(re.findall('a.b', 'ab aab a*b a2b a牛b a
b',re.DOTALL)) # ['aab', 'a*b', 'a2b', 'a牛b']
# ?匹配0个或者1个由左边字符定义的片段。
# print(re.findall('a?b', 'ab aab abb aaaab a牛b aba**b')) # ['ab', 'ab', 'ab', 'b', 'ab', 'b', 'ab', 'b']
# * 匹配0个或者多个左边字符表达式。 满足贪婪匹配 @@
# print(re.findall('a*b', 'ab aab aaab abbb')) # ['ab', 'aab', 'aaab', 'ab', 'b', 'b']
# print(re.findall('ab*', 'ab aab aaab abbbbb')) # ['ab', 'a', 'ab', 'a', 'a', 'ab', 'abbbbb']
# + 匹配1个或者多个左边字符表达式。 满足贪婪匹配 @@
# print(re.findall('a+b', 'ab aab aaab abbb')) # ['ab', 'aab', 'aaab', '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', 'a*b', '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', 'a1b a3b aeb a*b arb a_b')) # ['a1b', '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', 'a+b']
# print(re.findall('a[^a-z]b', 'acb adb a3b a*b')) # ['a3b', 'a*b']