正则表达式
正则表达式本身也是一门语言,针对字符串匹配,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找到括号里算出来进行替换。


浙公网安备 33010602011771号