正则表达式语法
- 正则表达式是一个特殊的字符序列,它能方便的检查一个字符串是否与某种模式匹配。
- 下面是则表达式的一些常见用法:
# 正则表达式
import re # 正则表达式模块
# 匹配除了换行符之外的所有字符
m = re.findall('.', 'aa\ccdef')
print(m)
# 运行结果:['a', 'a', '\\', 'c', 'c', 'd', 'e', 'f']
# 转义字符
m = re.findall('\.', 'ad.cb')
print(m)
# 运行结果:['.']
# 字符集
m = re.findall('a[bcd]e', 'abeaceade') #字符集就是用[]扩起来的,只要匹配其中的任意一个字符都可以
print(m)
# 运行结果:['abe', 'ace', 'ade']
# 数字
m = re.findall('\d', 'abc123def')
print(m)
# 运行结果:['1', '2', '3']
# 非数字
m = re.findall('\D', 'abc123def')
print(m)
# 运行结果:['a', 'b', 'c', 'd', 'e', 'f']
# 空白字符
m = re.findall('\s', 'abc a\tb2c')
print(m)
# 运行结果:[' ', '\t']
# 非空白字符
m = re.findall('\S', 'abc a\tb2c')
print(m)
# 运行结果:['a', 'b', 'c', 'a', 'b', '2', 'c']
#数字和字母
m = re.findall('\w', 'abc#12#e#f-+')
print(m)
# 运行结果:['a', 'b', 'c', '1', '2', 'e', 'f']
#非数字和字母
m = re.findall('\W', 'abc#12#e#f-+')
print(m)
# 运行结果:['#', '#', '#', '-', '+']
#匹配开头
m = re.findall('^abc', 'abcabc') #匹配开头的abc
print(m)
# 运行结果:['abc']
#匹配结尾
m = re.findall('abc$', 'abcabc') #匹配结尾的abc
print(m)
# 运行结果:['abc']
#不区分大小写
m = re.findall('abc', 'abcABc', re.I)
print(m)
# 运行结果:['abc', 'ABc']
#匹配换行
s = 'hello\nworld
'
m = re.findall(r'(.*)
', s, re.S)
print(m)
# 运行结果:['hello\nworld']
#匹配多行
m = re.findall('^abc','abc\nabc')
print(m) # ['abc']
m = re.findall('^abc','abc\nabc',re.M)
print(m) # ['abc', 'abc']
# 运行结果:['abc', 'abc']
# 匹配一个或0个
m = re.findall('ab?', 'abbbbaba')
print(m)
# 运行结果:['ab', 'ab', 'a']
# 匹配至少一个
m = re.findall('ab+', 'abbbbabb') # 匹配一个或着多个
print(m)
# 运行结果:['abbbb', 'abb']
# 匹配至少0个
m = re.findall('ab*', 'aaabbabb')
print(m)
# 运行结果:['a', 'a', 'abb', 'abb']
#匹配以org结尾的邮箱
m = re.findall('\w+@\w+\.org','[email protected];[email protected]')
print(m)
# 运行结果:['[email protected]']
#其他规则
# 如果是多次调用某个正则,则最好先编译后使用,编译之后,可以多次使用
p = re.compile('^abc')
m = p.findall('abc\nabc')
print(m)
# 运行结果:['abc']
m = p.findall('abcdef\nnfdsfabc')
print(m)
# 运行结果:['abc']
m = p.findall('abcdef\nnfdsfabc')
print(m)
# 运行结果:['abc']