Symblos
literal 匹配字符串的值 这个比较简单
rel1|rel2 匹配rel1或rel2的表达式
然后主要就是各种特殊的字符了 如果需要匹配特殊字符需要加入转义符号:
. 匹配任何字符 除了换行符号
^ 匹配字符串开始
>>> s
'111111622222227'
>>> print re.findall('^[1-9]',s)
['1']
$ 匹配字符串结束
>>> s
'111111622222227'
>>> print re.findall('[2-9]$',s)
['7']
* 匹配前面出现的表达式0到多次
+ 匹配前面出现的表达式一次以上
?匹配前面出现的表达式0到一次
当使用在重复元素的后面时候,表示获得越短的字符串越好(即非贪婪模式,正则表达式默认为贪婪模式)
[...] 主要就是匹配字符组里的任意一个字符
[..x-y..]
>>> s
'abcdefghijklmnopqrstuvwxyz12345'
>>> re.findall('[123a-gz]',s)
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'z', '1', '2', '3']
(*|+|?|{})? 主要用于非贪婪版本
(...) 把括号里面的保存为子组
\d \w \s \b:这几个记得对应的大写方式就是使用的反义 \d代表数字, \D代表非数字
\w
相当于[A-Za-z0-9_]
\s
[ \t\n\r\f\v]
\b 匹配的是空格字符和一些不可打印的字符
'hi the day is very good'
>>> re.findall(r'\bthe\b',s)
['the']
\nn \c \A(\Z)
\nn:匹配已经保存的子组,从1开始到99,如果是0或者3个八进制的数解读为字符
>>> s= 'hi hi the day hihi is very bad'
>>>
>>> re.findall(r'(hi) \1',s)
['hi']
\c :匹配特殊字符 \\ \^ \$
\A(\Z) 匹配字符串的起始(结束)
上面主要是pattern的一些基本用法
下面说下re的模块使用
re.compile(pattern,flags=0)
主要是编制一个具有pattern属性的对象
re.match
re.match("c", "abcdef") # No match
re.search
re.search("c", "abcdef") # Match
re.sub
re.subn
主要是替换匹配的字符,/g<name> 如/g<2>,可以设置count的值指定替换几次咯
re.sub(r'(\W+)', r'\g<1>#','Words, words, words.')
'Words, #words, #words.#'
正则表达式抛出的异常
exception re.error