首页 > 代码库 > 正则表达式

正则表达式

使用的特殊符号:

*   匹配前面出现的正则表达式0次或多次

+   匹配前面出现的正则表达式1次或多次

?  匹配前面出现的正则表达式0次或1次

re1|re2  匹配正则表达式re1或re2

^   匹配字符串的开始

$   匹配字符串的结尾

.   匹配任何字符(换行符除外)

{N}   匹配前面出现的正则表达式出现N次

 

使用的字符

\d   匹配任何数字,和[0-9]一样(\D是\d的反义:任何非数字符)

\w   匹配任何数字字母字符,和[A-Za-z0-9]相同(\W是\w的反义)

\s   匹配任何空白符,和[\n\t\r\v\f]相同,(\S是\s的反义)

\b   匹配单词边界(\B是\b的反义)

\A   匹配字符串的开始

\Z   匹配字符串的结束

 

>>> import re

>>> str = ‘abc123def12gh1‘

>>> p1 = re.compile(‘\d+‘)
>>> print p1.findall(str)
[‘123‘, ‘12‘, ‘1‘]
>>>
>>> p2 = re.compile(‘\d‘)
>>>
>>> print p2.findall(str)
[‘1‘, ‘2‘, ‘3‘, ‘1‘, ‘2‘, ‘1‘]
>>>

>>> str = ‘a@163.com;b@gmail.com;c@qq.com e0@163.com;f@qq.com‘
>>> p3 = re.compile(‘\w+@163\.com‘)
>>> print p3.findall(str)
[‘a@163.com‘, ‘e0@163.com‘]
>>>
>>> p4 = re.compile(‘\w+@[163|qq]\.com‘)
>>> print p4.findall(str)
[]
>>> p4 = re.compile(‘\w+@[163|qq]+\.com‘)  #  \w+  @前面一个或多个数字或字母, \.com  \为转义字符
>>> print p4.findall(str)
[‘a@163.com‘, ‘c@qq.com‘, ‘e0@163.com‘, ‘f@qq.com‘]

 

>>> str = ‘<html><h>title</h><body>xxx</body></html>‘
>>> p5 = re.compile(‘<h>[^<]+</h>‘)   # [^<]+表示不是尖括号<
>>> print p5.findall(str)
[‘<h>title</h>‘]
>>>
>>> p5 = re.compile(‘<h>([^<]+)</h><body>([^<]+)</body>‘)  #圆括号用来指定找的部分
>>> print p5.findall(str)
[(‘title‘, ‘xxx‘)]

 

>>> str = ‘xx2016-06-11yy‘
>>> p6 = re.compile(‘\d{4}-\d{2}-\d{2}‘)    #\d{4}  数字出现4次
>>> print p6.findall(str)
[‘2016-06-11‘]

>>> p7 = re.compile(‘\d\d\d\d-\d\d-\d\d‘)
>>> print p7.findall(str)
[‘2016-06-11‘]

 

正则表达式