python_正则表达式

正则表达式

需要导入模块
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']
原文地址:https://www.cnblogs.com/SkyRabbit/p/11234398.html