正则表达式是一种用来匹配字符串的强有力的武器。对字符串的检索匹配和处理。
除了自己定义规则, 还有很多匹配的规则时提前就给你定义好了的. 下面有一些特殊的匹配类型给大家先总结一下
- \d : 任何数字
- \D : 不是数字
- \s : 任何 white space, 如 [\t\n\r\f\v]
- \S : 不是 white space
- \w : 任何大小写字母, 数字和 “” [a-zA-Z0-9]
- \W : 不是 \w
- \b : 空白字符 (只在某个字的开头或结尾)
- \B : 空白字符 (不在某个字的开头或结尾)
- \\ : 匹配 \
- . : 匹配任何字符 (除了 \n)
- ^ : 匹配开头
- $ : 匹配结尾
- ? : 前面的字符可有可无
正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb"。而如果使用非贪婪的数量词"ab*?",将找到"a"。
re 模块使 Python 语言拥有全部的正则表达式功能。
# encoding: UTF-8
import re
# 将正则表达式编译成Pattern对象
pattern = re.compile(r'hello')
# 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None
match = pattern.match('hello world!')
if match:
# 使用Match获得分组信息
print match.group()
### 输出 ###
# hello
以下为使用非贪婪算法查找网页中所有课程的标题。
# -*- coding: UTF-8 -*-
import re
html = '''
<!DOCTYPE html>
'''
#非贪婪搜索使用原生字符匹配<p class="coursename" title="(.*?) "onclick中的标题
title = re.findall(r'<p class="coursename" title="(.*?)" onclick',html) # .*? 就是匹配1个或多个字符
for i in title:
print i
#输出网页内容中所有的标题
下图列出了Python支持的正则表达式元字符和语法---这里
参考链接:Python正则表达式指南