正则表达式
字符 | 表示 | 实例 |
---|---|---|
\d | 0-9的任何数字 | |
\D | 0-9的以外的任何字符 | |
\w | 任何字母、数字、下划线,可认为匹配单词 | |
\W | \w以外的任何字符 | |
\s | 空格、制表符\t、换行符\n,可认为是匹配’空白‘字符 | |
\S | \s以外的任何字符 |
import re #re模块包含正则表达相关含函数
#匹配"asfasf123-123-1234asfasf"中的123-123-1234
reg = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
reg1 = re.compile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)') #和reg一样,只是分为2组
reg2 = re.compile(r'\d{3}-\d{3}-\d{4}')
#------------------------------------
#title:使用管道'|'匹配多个分组
#tips :如果要匹配字符串中的'|',则需要使用倒斜杠转义,即\|
#------------------------------------
reg = re.compile(r'Batman|Tina Fey') #匹配第一次出现的文本
#对于'Batman and Tina Fey'的匹配,结果为'Batman'
#对于'Tina Fey and Batman'的匹配,结果为'Tina Fey'
reg1 = re.compile(r'Bat(man|mobile|bat|copter)') #匹配字符串中含有Batman、Batmobile、Batbat、Batcopter中的某一个
#------------------------------------
#title:使用'?'实现可选匹配
#tips :如果要匹配字符串中的'?',则需要使用倒斜杠转义,即\?
#------------------------------------
reg = re.compile(r'Bat(wo)?man') #模式wo为可选的分组,wo出现0次或1次,既可匹配字符串中的Batman,也可匹配Batwoman
#------------------------------------
#title:使用'*'匹配0次或多次
#tips :如果要匹配字符串中的'*',则需要使用倒斜杠转义,即\*
#------------------------------------
reg = re.compile(r'Bat(wo)*man') #(wo)*匹配'wo'零次或多次,可匹配Batman、Batwoman、Batwowoman...
#------------------------------------
#title:使用'+'匹配1次或多次
#tips :如*果要匹配字符串中的'+',则需要使用倒斜杠转义,即\+
#------------------------------------
reg = re.compile(r'Bat(wo)+man') #(wo)+匹配'wo'1次或多次,可匹配Batwoman、Batwowoman...
#------------------------------------
#title:使用'{}'匹配特定次数
#tips :
#------------------------------------
reg = re.compile(r'(Ha){3}') #'Ha'出现3次,匹配字符串中的’HaHaHa',但不会匹配'HaHa'
#{3,5} 出现3-5次 {3,}至少出现3次以上
#------------------------------------
#title:贪心(Ha){3,5}和非贪心(Ha){3,5}?匹配
#tips :
#------------------------------------
#对于包含'HaHaHaHaHa'的字符串
reg1 = re.compile(r'(Ha){3,5}') #贪心匹配结果为HaHaHaHaHa,Ha出现5次的
reg2 = re.compile(r'(Ha){3,5}?') #非贪心匹配结果为HaHaHa,Ha出现3次的
#[0-5] 和 (0|1|2|3|4|5) 作用一样,匹配0-5中的一个
#[aeiouAEIOU]匹配元音字符,不论大小写 [^aeiouAEIOU] 则是匹配非元音字符
#[a-zA-Z0-9] 匹配所有的大小写字母和数字
#方括号[]内正则表达式符号一般不被解释,不需要在'.'、'?'、'()'用'\'转义
#------------------------------------
#title:开始'^'末尾'$'
#tips :插入符号'^'
#------------------------------------
reg = re.compile(r'^Hello') #匹配以'Hello'开始的字符串
#r'\d$' 匹配以0-9中某个数结束的字符串
#r'^\d+$' 匹配从开始到结束都是数字的字符串
#------------------------------------
#title:通配符'.'
#tips :匹配除换行之外所有字符,如果要匹配字符串中的'.',则需要使用倒斜杠转义,即\.
#------------------------------------
#r'.at' 匹配cat、lat、hat...., '.'只能匹配一个字符
#r'.*at' 匹配cccccat、9-098.\.at...., '.*'匹配所有字符, 如r'First Name:(.*) Last Name:(.*)'
##对于'<To serve man> for dinner.>'
##r'<.*>' 匹配结果为'<To serve man> for dinner.>' 贪心匹配
##r'<.*?>' 匹配结果为'<To serve man>' 非贪心匹配