正則表達式總結:
python支持的字符和語法:
. 匹配任意除換行符\n 之外的所有字符
\ 轉義字符 比如說要匹配的字符中含有 \ . * 等可以使用\轉義 例如 \* \. \\
[.....] 直接寫要匹配的字符串 例如a[bcd]e
\d 匹配數字
\D 非數字
\s 空白字符 例如:空格 \n \r \t。。。
\S 飛空白字符
\w 匹配字母或數字或下划線或漢字
\W 匹配任意不是字母,數字,下划線,漢字的字符
^ 匹配字符串的開始
$ 匹配字符串的結束
[^x] 匹配除了x以外的任意字符
常用的限定符:
* 重復0次或跟多次 也就是大於等於0
+ 重復1次或跟多次 也就是大於等於1
? 重復0次或一次
{n} 重復n次
{n,} 重復n或更多次
{n,m} 重復n到m次
懶惰限定符:
.*? 代表除了換行符之外匹配到的最少次數 相當於只匹配一次吧。。
*?重復任意次但經可能少重復
+?重復一次或跟多次 盡可能少重復
?? 重復0次或1次,但盡可能少重復
{n,m}? 重復n到m次,但盡可能少重復
{n,}? 重復n次以上,但盡可能少重復
例子:
#-*-coding:utf-8-*-
#author:wangxing
#descr:re
import re
s1 = '345admin1234yyy'
s2 = 'admin12341.222'
s3 = 'adminstratior'
result = re.match('\D+',s2) #match只能夠找到字符串的開頭匹配到的第一個,result是一個對象
if result:
print result.group()
else:
print 'Nothing'
result1 = re.search('\d+',s3) #search 匹配字符串所有內容的第一個匹配到的,resul1是一個對象
if result1:
print result1.group() #group用於顯示匹配到的字符
else:
print 'Also Nothing '
#compile 類似於python文件編譯后衛pyc格式,這里是編譯后為一個變量,好處是再次執行速度快
com = re.compile('\d+') #compile編譯的意思
print com.findall(s2) #findall是查找到字符串中所有符合條件的內容展示到一個列表中
print com.split('admin1www3xing4') #按照能夠匹配的子串將string分割后返回列表。maxsplit用於指定最大分割次數,不指定將全部分割。
com1 = re.search(r'(\w+)\d+(\w+)',s2)
print com1.groups() #groups 只匹配分組的也就是()里面的
print com1.group() #group 匹配所有表達式匹配到的