python笔记-正则表达式

2018-07-01 61次浏览 发表评论

Python提供re模块,包含所有正则表达式的功能。由于Python的字符串本身也用\转义,因此我们强烈建议使用Python的r前缀,就不用考虑转义的问题了:

# -*- coding: utf-8 -*-
import re

print(re.match(r'^\d{3}\-\d{3,8}$', '010-12345'))
print(re.match(r'^\d{3}\-\d{3,8}$', '010 12345'))

match()方法判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None

test = '用户输入的字符串'
if re.match(r'正则表达式', test):
    print('ok')
else:
    print('failed')

切分字符串

# -*- coding: utf-8 -*-

import re

print(re.split(r'\s+', 'a b       c'))           #使用正则可以匹配多个空格
print(re.split(r'[\s\,]+', 'a,,,,,b, c  d'))

分组

正则表达式还有提取子串的强大功能。用()表示的就是要提取的分组(Group),比如:

import re

m = re.match(r'([0-9]{3})-([0-9]{3,8})', '010-123456 aaabbb')   # 在一字符串中提取正则内容

# 使用group()方法提取字串
print(m.group(0))  # => 010-123456    # group(0)是原始字符串
print(m.group(1))  # => 010           # group(1)是第一个字串
print(m.group(2))  # => 123456        # group(2)是第二个字串

re.search方法:

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

import re

line = "Cats are smarter than dogs"

print(re.match(r'dogs', line))
print(re.search(r'dogs', line))

评论

随便说点,聊聊天~