模块的的作用主要是用于字符串和文本处理,查找,搜索,替换等

复习一下基本的正则表达式吧

 .:匹配除了换行符以为的任意单个字符

 *:匹配任意字符,一个,零个,多个都能匹配得到 俗称贪婪模式

+:匹配位于+之前的一个或者多个字符

 |:匹配位于|之前或者之后的字符

 ^:匹配行首

 $:匹配行尾

 "1" cellspacing="0" bordercolor="#000000" cellpadding="2" style="text-align: left; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; width: 678px; font: 16px/26px 宋体, Arial; word-wrap: break-word; white-space: normal; letter-spacing: normal; color: rgb(102,102,102); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"> 特殊序列符号
意义 \A
只在字符串开始进行匹配 \Z
只在字符串结尾进行匹配 \b
匹配位于开始或结尾的空字符串 \B
匹配不位于开始或结尾的空字符串 \d
相当于[0-9] \D
相当于[^0-9] \s
匹配任意空白字符:[\t\n\r\r\v] \S
匹配任意非空白字符:[^\t\n\r\r\v] \w
匹配任意数字和字母:[a-zA-Z0-9] \W
匹配任意非数字和字母:[^a-zA-Z0-9]

正则表达式语法表

语法 意义 说明 "." 任意字符
"^" 字符串开始 '^hello'匹配'helloworld'而不匹配'aaaahellobbb' "$" 字符串结尾 与上同理 "*" 
0 个或多个字符(贪婪匹配)
<*>匹配<title>chinaunix</title> "+"
1 个或多个字符(贪婪匹配)
与上同理
""
0 个或多个字符(贪婪匹配)
与上同理
*"word-wrap: break-word" /> 以上三个取第一个匹配结果(非贪婪匹配) <*>匹配<title>
{m,n}
对于前一个字符重复m到n次,{m}亦可
a{6}匹配6个a、a{2,4}匹配2到4个a {m,n}"word-wrap: break-word" /> 对于前一个字符重复m到n次,并取尽可能少
‘aaaaaa'中a{2,4}只会匹配2个 "\\"
特殊字符转义或者特殊序列
[]
表示一个字符集 [0-9]、[a-z]、[A-Z]、[^0] "|"
或 A|B,或运算 (...)
匹配括号中任意表达式
("word-wrap: break-word" /> 注释,可忽略
("word-wrap: break-word" /> Matches if ... matches next, but doesn't consume the string.
'("word-wrap: break-word; font-size: 14px">在hellotest中匹配hello ("word-wrap: break-word" /> Matches if ... doesn't match next.
'("word-wrap: break-word; font-size: 14px">  若hello后面不为test,匹配hello
("word-wrap: break-word" /> Matches if preceded by ... (must be fixed length).
'("word-wrap: break-word; font-size: 14px">)test'  在hellotest中匹配test
("word-wrap: break-word" /> Matches if not preceded by ... (must be fixed length).
'("word-wrap: break-word; font-size: 14px">test'  在hellotest中不匹配test

匹配的标志和含义

标志 含义 re.I 忽略大小写 re.L 根据本地设置而更改\w,\W,\b,\B,\s,\S的匹配内容 re.M 多行匹配模式 re.S 使“.”元字符匹配换行符 re.U 匹配Unicode字符 re.X 忽略需要匹配模式中的空格,并且可以使用"#"号注释


文本内容(提取Linux下的password文件)

man:x:6:12:man:/var/cache/man:/bin/nologin

re模块中有3个搜索函数,每个函数都接受3个参数(匹配模式,要匹配的字符串,进行匹配的标志),如果匹配到了就返回一个对象实例,么有就返会None.

findall():用于在字符串中查找符合正则表达式的字符串,并返回这些字符串的列表

search():搜索整个字符串,返回对象实例

match():只从第一个字符开始匹配,后面的不再匹配,返回对象实例

lovelinux@LoveLinux:~/py/boke$ cat text 
man:x:6:12:man:/var/cache/man:/bin/sh
lovelinux@LoveLinux:~/py/boke$ cat test.py
#/usr/bin/env python
#coding:utf-8
import re
with open('text','r') as txt:
 f = txt.read()
 print re.match('bin',f)
 print re.search('bin',f).end() 
lovelinux@LoveLinux:~/py/boke$ python test.py 
None
34
lovelinux@LoveLinux:~/py/boke$ vim test.py
lovelinux@LoveLinux:~/py/boke$ python test.py 
None
<_sre.SRE_Match object at 0x7f12fc9f9ed0>

返回是对象实例有2个方法,

start():返回记录匹配到字符的开始索引 

end():返回记录匹配到字符的结束索引

lovelinux@LoveLinux:~/py/boke$ python test.py 
None
31
34
lovelinux@LoveLinux:~/py/boke$ cat test.py 
#/usr/bin/env python
#coding:utf-8
import re
with open('text','r') as txt:
 f = txt.read()
 print re.match('bin',f)
 print re.search('bin',f).start()
 print re.search('bin',f).end()

广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。