一、python转义字符
正则表达式使用”\”来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用” \\ “表示正则表达式中的” \ “,因为正则表达式中如果要匹配” \ “,需要用\来转义,变成” \ “,而Python语法中又需要对字符串中每一个\进行转义,所以就变成了” \\ “。为了使代码可读性更高,python设计了原始字符串——raw string。raw string就是用’r’作为字符串前缀,如r”\n”:标示两个字符”\”和”n”,而不是换行符。
二、正则表达式元字符说明:

. 匹配除换行符以外的任意字符
^ 匹配字符串的开始
$ 匹配字符串的结束
[] 用来匹配一个指定的字符类别
? 对于前一个字符字符重复0次到1次
* 对于前一个字符重复0次到无穷次
{} 对于前一个字符重复m次
{m,n} 对前一个字符重复为m到n次
\d 匹配数字,相当于[0-9]
\D 匹配任何非数字字符,相当于[^0-9]
\s 匹配任意的空白符,相当于[ fv]
\S 匹配任何非空白字符,相当于[^ fv]
\w 匹配任何字母数字字符,相当于[a-zA-Z0-9_]
\W 匹配任何非字母数字字符,相当于[^a-zA-Z0-9_]
\b 匹配单词的开始或结束**

三、导入正则表达式模块

>>>import re

查看正则表达式模块方法:

>>>dir(re)
['DEBUG', 'DOTALL', 'I', 'IGNORECASE', 'L', 'LOCALE', 'M', 'MULTILINE', 'S', 'Scanner', 'T', 'TEMPLATE', 'U', 'UNICODE', 'VERBOSE', 'X', '_MAXCACHE', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__version__', '_alphanum', '_cache', '_cache_repl', '_compile', '_compile_repl', '_expand', '_pattern_type', '_pickle', '_subx', 'compile', 'copy_reg', 'error', 'escape', 'findall', 'finditer', 'match', 'purge', 'search', 'split', 'sre_compile', 'sre_parse', 'sub', 'subn', 'sys', 'template']
>>>

四、常用正则表达式处理函数
4.1、re.search
re.search函数会在字符串内查找模式匹配,只找到第一个匹配然后返回,如果字符串没有匹配,返回none。
显示帮助:

>>>help(re.search)
search(pattern,string,flag=0)

例子:

>>> name="Hello,My name is kuangl,nice to meet you..."
>>> k=re.search(r'k(uan)gl',name)
>>> if k:
... print k.group(0),k.group(1)
... else:
... print "Sorry,not search!"
...
kuangl uan

4.2、re.match
re.match 尝试从字符串的开始匹配一个模式,也等于说是匹配第一个单词。

name="Hello,My name is kuangl,nice to meet you..."
>>> k=re.match(r"(\H....)",name)
>>> if k:
... print k.group(0),'\n',k.group(1)
... else:
... print "Sorry,not match!"
...
Hello
Hello
>>>

re.match与re.search的区别:re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
4.3、re.findall
re.findall 在目标字符串查找符合规则的字符串

>>> help(re.findall)
findall(pattern, string, flags=0)

第一个参数:规则
第二个参数:目标字符串
但三个参数:后面还可以跟一个规则选择项
返回的结果是一个列表,建中存放的是符合规则的字符串,如果没有符合规则的字符串呗找到,就会返回一个空值。
实例:查找邮件账号

>>> mail='<user01@mail.com> <user02@mail.com> user04@mail.com' #第3个故意没有尖括号
>>> re.findall(r'(\w+@m....[a-z]{3})',mail)
['user01@mail.com', 'user02@mail.com', 'user04@mail.com']

4.4、re.sub
re.sub 用于替换字符串的匹配项

>>> help(re.sub)
sub(pattern, repl, string, count=0)

第一个参数:规则
第二个参数:替换后的字符串
第三个参数:字符串
第四个参数:替换个数。默认为0,表示每个匹配项都替换
实例:将空白处替换成-

>>> test="Hi, nice to meet you where are you from?"
>>> re.sub(r'\s','-',test)
'Hi,-nice-to-meet-you-where-are-you-from?'
>>> re.sub(r'\s','-',test,5) #替换至第5个
'Hi,-nice-to-meet-you-where are you from?'
>>>

4.5、re.split
re.split 用于来分割字符串

>>> help(re.split)
split(pattern, string, maxsplit=0)

第一个参数:规则
第二个参数:字符串
第三个参数:最大分割字符串,默认为0,表示每个匹配项都分割
实例:分割所有的字符串

>>> test="Hi, nice to meet you where are you from?"
>>> re.split(r"\s+",test)
['Hi,', 'nice', 'to', 'meet', 'you', 'where', 'are', 'you', 'from?']
>>> re.split(r"\s+",test,3) #分割前三个
['Hi,', 'nice', 'to', 'meet you where are you from?']
>>>

4.6、re.compile
re.compile 可以把正则表达式编译成一个正则对象

>>> help(re.compile)
compile(pattern, flags=0)

第一个参数:规则
第二个参数:标志位

>>> test="Hi, nice to meet you where are you from?"
>>> k=re.compile(r'\w*o\w*') #匹配带o的字符串
>>> dir(k)
['__copy__', '__deepcopy__', 'findall', 'finditer', 'match', 'scanner', 'search', 'split', 'sub', 'subn']
>>> print k.findall(test) #显示所有包涵o的字符串
['to', 'you', 'you', 'from']
>>> print k.sub(lambda m: '[' + m.group(0) + ']',test) # 将字符串中含有o的单词用[]括起来
Hi, nice [to] meet [you] where are [you] [from]?
>>>

五、用urllib2、re、os 模块下载文件的脚本

#!/usr/bin/env python
import urllib2
import re
import os
URL='http://image.baidu.com/channel/wallpaper'
read=urllib2.urlopen(URL).read()
pat = re.compile(r'src="http://.+?.js">')
urls=re.findall(pat,read)
for i in urls:
url= i.replace('src="','').replace('">','')
try:
iread=urllib2.urlopen(url).read()
name=os.path.basename(url)
with open(name,'wb') as jsname:
jsname.write(iread)
except:
print url,"url error"

&思远晨曦

更多相关文章

  1. 如何在python中使用命名组和datadict从正则表达式模式中组合字符
  2. 字符串压缩 牛客网 程序员面试金典 C++ Python
  3. Python正则表达式在分隔符之间查找特殊字符
  4. Python 用hashlib求中文字符串的MD5值
  5. 将字节列表转换为字节字符串
  6. [D]用python提取多段字符串该怎么写正则表达式。
  7. 如何用位于括号外的逗号分隔字符串?
  8. 用于搜索和替换大字符串的最快Python方法
  9. python 字符串操作

随机推荐

  1. 关于Sytem.gc()主动触发Android(安卓)GC
  2. Android中的Intent Filter与安全
  3. unity obb 分包 上传googleplay
  4. Android隐藏输入法软键盘的一些说明
  5. android基本 UI(三)—单选RadioButton与复
  6. Android(安卓)ui utils-简单实用的Androi
  7. Android: Android(安卓)Thumbnail 攻略
  8. Android(安卓)金钱计算BigDecimal 的使用
  9. android no target available 解决
  10. [Android(安卓)Training视频系列]1.2 Run