[list]
[*][color=red]不贪婪的限定符 *?、+?、?? 或 {m,n}?,尽可能匹配小的文本。[/color]
[*][color=red]\S 非空字符[/color]
[*][color=red]"." 标识任意字符非换行字符,可以通过设置编译参数来包含匹配换行字符[/color]
[*][color=red](a|b|c) 要么匹配 a ,要么匹配 b ,要么匹配 c 。[/color]
[*][color=red]| A|B 表示A或者B , AB为任意的正则表达式 另外|是非贪婪的如果A匹配,则不找B[/color]
[*][color=red]松散正则表达式:忽略空白,注释 re.VERBOSE[/color]
[*]^ 匹配字符串的开始。
[*]$ 匹配字符串的结尾。
[*]\b 匹配一个单词的边界。
[*]\d 匹配任意数字。
[*]\D 非 \d,匹配任意非数字字符。
[*]\s 表示空字符
[*]\w [a-zA-Z0-9_]
[*]\W 非 \w
[*]x? 匹配一个可选的 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符)。
[*]x* 匹配0次或者多次 x 字符。
[*]x+ 匹配1次或者多次 x 字符。
[*]x{n,m} 匹配 x 字符,至少 n 次,至多 m 次。
[*](x) 一般情况下表示一个记忆组 (remembered group) 。你可以利用 re.search 函数返回对象的 groups() 函数获取它的值。
[*][] 表一系列字符 [abcd] 表a,b,c,d [^a] 表示非a
[/list]
电话号码正则表达式([color=red]松散正则表达式[/color]):
[*][color=red]不贪婪的限定符 *?、+?、?? 或 {m,n}?,尽可能匹配小的文本。[/color]
[*][color=red]\S 非空字符[/color]
[*][color=red]"." 标识任意字符非换行字符,可以通过设置编译参数来包含匹配换行字符[/color]
[*][color=red](a|b|c) 要么匹配 a ,要么匹配 b ,要么匹配 c 。[/color]
[*][color=red]| A|B 表示A或者B , AB为任意的正则表达式 另外|是非贪婪的如果A匹配,则不找B[/color]
[*][color=red]松散正则表达式:忽略空白,注释 re.VERBOSE[/color]
[*]^ 匹配字符串的开始。
[*]$ 匹配字符串的结尾。
[*]\b 匹配一个单词的边界。
[*]\d 匹配任意数字。
[*]\D 非 \d,匹配任意非数字字符。
[*]\s 表示空字符
[*]\w [a-zA-Z0-9_]
[*]\W 非 \w
[*]x? 匹配一个可选的 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符)。
[*]x* 匹配0次或者多次 x 字符。
[*]x+ 匹配1次或者多次 x 字符。
[*]x{n,m} 匹配 x 字符,至少 n 次,至多 m 次。
[*](x) 一般情况下表示一个记忆组 (remembered group) 。你可以利用 re.search 函数返回对象的 groups() 函数获取它的值。
[*][] 表一系列字符 [abcd] 表a,b,c,d [^a] 表示非a
[/list]
re.sub(pattern,dest,string)
re.search(pattern,string)
电话号码正则表达式([color=red]松散正则表达式[/color]):
>>> phonePattern = re.compile(r'''
# don't match beginning of string, number can start anywhere
(\d{3}) # area code is 3 digits (e.g. '800')
\D* # optional separator is any number of non-digits
(\d{3}) # trunk is 3 digits (e.g. '555')
\D* # optional separator
(\d{4}) # rest of number is 4 digits (e.g. '1212')
\D* # optional separator
(\d*) # extension is optional and can be any number of digits
$ # end of string
''', re.VERBOSE)
>>> phonePattern.search('work 1-(800) 555.1212 #1234').groups() 1
('800', '555', '1212', '1234')
>>> phonePattern.search('800-555-1212') 2
('800', '555', '1212', '')