正则表达式

正则表达式本身也是一门语言,针对字符串匹配,Python有接口,引用方法。就其本质而言,正则表达式(或RE)是一种小型的、高度专业化的。(在Python中)它内嵌在Python中,并通过re模块实现。

"abcd".find("b"),还有一个方法是"abcd".split("b")

"abcd".replace("ab","ee")

ip:127.0.0.1

import re

re.findall("匹配的规则","匹配的内容"):把所有匹配的结果以列表的形式返还给我们。

先看字符匹配:字符主要分为普通字符和元字符。

re.findall('alex',''):把所有匹配的结果以列表的形式返还给我们。注意re.findall()返回的是一个列表的格式,如果是空的,则返回空列表。

注意正则表达式有11个元字符。分别是.   ^    $   *    +   ? {}   []  | ()  \

.   :表示除了换行符以外的任何字符。注意一个点只能匹配一个字符。re.findall('alex.w','aaaalexaw')

^  :表示以XXX为开始。re.findAll('^alex','')

$:表示以XXX结尾。re.findAll('alex$')

*   +    ?    {}:这四个都在做同一件事情:重复出现。

*:控制的是它前边的一个字符。则re.findall('alex*','www.ale'),这个是可以匹配的,因为*可以出现0次或者多次。re.findall("alex*","www.alexxxxxx")。这是一个贪婪匹配。

+:它的意思是匹配1到多次。

*、+:都实现一个重复的功能。

?:是实现0次或1次。re.findall('alex?',wwwale)或者re.findall('alex?',wwwalex)

{3,5}:可以匹配多少次,意思是可以匹配三次、四次或者五次。re.findall('alex{3,5}','wwwalexxx')

接下来最重要的是字符集

re.findall('a[bc]d','wwwabd')[abd]

re.findall('a[bc]d','wwwacd')[acd]

re.findall('a[bc]d','wwwabcd')[]

元字符都有自己的特殊意义

但是把它放在字符集里面就失去意义了,元字符在字符集里面就是一个普通字符了。

但是也有几个在字符集里面依旧有特殊功能。

re.findall('[a-z]','wwwa.d') ['w','w','w','a','d']

re.findall('[1-9]','ww3wa8.d')['3','8']

re.findall('[^1-9]','ww3wa8.d')['w','w','w','a','.','d']

注意正则表达式中的'\':

\:反斜杠后边跟元字符去除特殊功能。

\:反斜杠后边跟普通字符实现特殊功能。

\d:匹配任何十进制数;它相当于类[0-9]。re.findall('\d','ww3wa8.d0')['3','8','0']

\D:匹配任何非数字字符;它相当于类[^0-9].

\s:匹配任何空白字符;它相当于类[\t\n\r\f\v]。

\S:匹配任何非空白字符;它相当于类[^\t\n\r\f\v]

\w:匹配任何字母数字字符。

():跟数学上的括号功能一样,

search:找到一个下边就不再找了。

re.search("(ab)*","aba").group()     'ab'

search找到括号里算出来进行替换。

 

posted @ 2017-02-22 14:10  关泉珍  阅读(41)  评论(0)    收藏  举报