python基础——正则表达式

1.c语言中的转义字符

转义字符
意义
ASCII码值(十进制)
\a
响铃(BEL)
007
\b
退格(BS) ,将当前位置移到前一列
008
\f
换页(FF),将当前位置移到下页开头
012
\n
换行(LF) ,将当前位置移到下一行开头
010
\r
回车(CR) ,将当前位置移到本行开头
013
\t
水平制表(HT) (跳到下一个TAB位置)
009
\v
垂直制表(VT)
011
\\
代表一个反斜线字符''\'
092
\'
代表一个单引号(撇号)字符
039
\"
代表一个双引号字符
034
\0
空字符(NULL)
000
\ddd
1到3位八进制数所代表的任意字符
三位八进制
\xhh
1到2位十六进制所代表的任意字符
二位十六进制

 

2.python中的规则

(1)r表示不对字符串进行转义,保持字符串原样。python中遇到'\'就转义。

        >>>print "\bhi"

  hi

  >>>print r"\bhi"

  \bhi

(2)re是python里的正则表达式模块。findall是其中一个方法,用来按照提供的正则表达式,去匹配文本中的所有符合条件的字符串。返回结果是一个包含所有匹配的list。

 

3.正则表达式规则

“\b”在正则表达式中表示单词的开头或结尾,空格、标点、换行都算是单词的分割。而“\b”自身又不会匹配任何字符,它代表的只是一个位置。所以单词前后的空格标点之类不会出现在结果里。

在正则表达式中,[]表示满足括号中任一字符。比如“[hi]”,它就不是匹配“hi”了,而是匹配“h”或者“i”。

“.”  "*"  “?”

import re
text="Hi,I am sdsfsf HisHildskd. I am his wife."
m=re.findall(r"Hi",text)      #找出所有Hi。得到['Hi', 'Hi', 'Hi']
if m:
    print m
else:
    print 'not match'
        
n=re.findall(r"\bHi\b",text)   #只找到单词Hi。得到['Hi']
if n:
    print n
else:
    print 'not match'
import re
text="site sea sue sweet see case sse ssee loses looses le"

n=re.findall(r".*",text)  
if n:
    print r".*",        #   *表示前面的字符可以任意重复多次。得到的是['site sea sue sweet see case sse ssee loses', '']
    print n
else:
    print 'not match'

l=re.findall(r".*?",text)   #   ?表示让他匹配到最短就停止
if l:
    print r".*?",           #   得到的是['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
    print l
else:
    print 'not match'

q=re.findall(r"l.*e",text)  #    以l开头,e结尾的最长字符串,得到['loses loose le']
if q:
    print r"l.*e",
    print q
else:
    print 'not match'

p=re.findall(r"l.*?e",text)  #  ?表示让他匹配到最短就停止,得到['lose', 'loose','le']
if p:
    print r"l.*?e",
    print p
else:
    print 'not match'

k=re.findall(r"\bs.*?e\b",text)  #  .匹配除了'\n\r'之外的所有字符,得到的是['site', 'sea sue', 'sweet see', 'sse', 'ssee']
if k:
    print r"\bs*?e\b",
    print k
else:
    print 'not match'

#找到所有以s开头以e结尾的单词
k=re.findall(r"\bs\S*?e\b",text)  #  \S匹配的是所有可见的字符,得到的是['site', 'sue', 'see', 'sse', 'ssee']
if k:
    print r"\bs\S*?e\b",
    print k
else:
    print 'not match'


text="dfds srg    sdf"          #   \s匹配的是所有不可见的字符,包括[\n\r\f\t\v],得到的是[' ', '\t']
rr=re.findall(r"\s",text)
if rr:
    print rr
else:
    print "NULL"

 



 

posted @ 2015-08-26 22:09  wy1290939507  阅读(258)  评论(0编辑  收藏  举报