Python学习记录:正则表达式

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 

你可能感兴趣的:(python,正则表达式)