主题:督促自己-清风Python练习贴
时间: 2020-08-27来源:ITEYE
前景提要
2005-1-8:接下来要用Python做两项工作: 1,网站的后台改造,用Python完成核心代码 会用到的技术:XML的读写,数据库的操作,XSLT的解析,代码的WebService化 2,一个网页爬虫机器人,抓取其他网站内容 正则表达式 其实对于一个项目的开发,语言并不是最重要的,关键是解决问题的方法和这种语言所提供的解决方案,为何选择Python来做这两个工作?开发快速,字符串处理能力强,移植性好 今天就先来测试一下Python的正则表达式能力 任务:读取tomcat的日志文件,并且把日期开头的内容显示出来,例如:xxxx-xx-xx import re regx = "\d\d\d\d-\d\d-\d+" f = open("c:\stdout.log","r"); i = 0 for str in f.readlines();: if re.search(regx,str);: Response.write(str+"<br>"); if i>10:break#由于是测试,只分析十行 i=i+1 f.close();; 代码很简单,关于正则表达式这里不做过多说明,由此也可以看出语言不是最重要的,重要的是解决方案。以下简单介绍一下Python的正则表达式,想了解更多到Google搜索Python+Regx
引用

样本规则表达式

ABC([d-w]*\d\d?)+XYZ

对于要匹配这个表达式的字符串,它必须以 "ABC" 开头、以 "XYZ" 结尾 -- 但它的中间必须要有什么呢?中间子表达式是 ([d-w]*\d\d?),而且后面跟了“一或多”运算符。所以,字符串的中间必须包括一个(或者两个,或者一千个)与括号中的子表达式匹配的字符或字符串。字符串 "ABCXYZ" 不匹配,因为它的中间没有必要的字符。

不过这个内部子表达式是什么呢?它以 d-w 范围内的零或多个字母开头。一定要注意:零字母是有效匹配,虽然使用英语单词 "some"(一些)来描述它,可能会感到很别扭。接着,字符串必须恰好有一个数字;然后有零或一个附加数字。(第一个数字字符类没有循环运算符,所以它只出现一次。第二个数字字符类有 "?" 运算符。)总而言之,这将翻译成“一个或两个数字”。以下是一些与规则表达式匹配的字符串:

匹配样本表达式的字符串

ABC1234567890XYZ
ABCd12e1f37g3XYZ
ABC1XYZ

还有一些表达式与规则表达式不匹配(想一想,它们为什么不匹配):

不匹配样本表达式的字符串

ABC123456789dXYZ
ABCdefghijklmnopqrstuvwXYZ
ABcd12e1f37g3XYZ
ABC12345%67890XYZ
ABCD12E1F37G3XYZ

需要一些练习才能习惯创建和理解规则表达式。但是,一旦掌握了规则表达式,您就具有了强大的表达能力。也就是说,转而使用规则表达式解决问题通常会很容易,而这类问题实际上可以使用更简单(而且更快速)的工具,如 string,来解决。
一个用来测试Python正则表达式的工具: http://kodos.sourceforge.net/ 图形界面,简单易用,适合学习Python的正则表达式 一个正则表达式标记的中文说明: http://hedong.3322.org/archives/000244.html

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行