- 1、本文档共67页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 应用实例 信息科学技术学院 郭炜 瑞典斯德哥尔摩 诸葛亮口中的曹操 找出三国演义中,在诸葛亮提到曹操的所有场景,他是怎么说的 模式: 孔明曰:“倘曹操引兵来到,当如之何?” 孔明曰:“公瑾主意欲降操,甚为合理。” 孔明答曰:“曹操乃汉贼也,又何必问?” 孔明笑曰:“今操引百万之众, ” :“”都是中文的 * 诸葛亮口中的曹操 import re f = open(c:/tmp/三国演义utf8.txt,r,encoding=utf-8) txt = f.read() f.close() pt = (孔明.{0,2}曰:“[^”]*(曹操|曹贼|操贼|曹阿瞒|操).*?”) a = re.findall(pt,txt) print(len(a)) #58 for x in a: #x形如: (孔明答曰:“曹操乃汉贼也,又何必问?”, 操) print(x[0]) * 抽取ip地址、邮箱、网址 import re ipadr = r\b((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\b mailbox = r\b[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+\b url = rhttp://[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(/[-a-zA-Z0-9]+)*\b s = My ip is , this is /python/new, my mailbox is guo_wei@. ok? m = re.search(ipadr,s) if m != None: print(m.group()) # * 抽取ip地址、邮箱、网址 m = re.search(mailbox,s) if m != None: print(m.group()) #guo_wei@ for x in re.finditer(url,s): print(x.group()) # /python/new * 简化正则表达式的编写 一般来说,要写一个精确的正则表达式,比如写一个正则表达式来匹配ip地址,要做到匹配它的字符串一定是ip地址,且ip地址一定能匹配它,是比较困难的。 正则表达式可以写得宽容一些,即ip地址一定能匹配它,但是能匹配它的不一定是ip地址。对匹配的字符串,另外再做一些额外的判断排除掉非ip地址,这样做比写精确的正则表达式容易。 例如: \d+\.(\d{1,3}\.){2}\d+ 然后再split以后手动判断每一段是不是都小于255 * * * * * * * * * * * * * * * * * * * * * * * * * * * 边界符号 * \A 表示字符串的左边界,即要求从此往左边不能有任何字符 \Z 表示字符串的右边界,即要求从此往右边不能有任何字符 ^ 与\A同。但多行匹配模式下还可以表示一行文字的左边界 $ 与\Z同。但多行匹配模式下还可以表示一行文字的右边界 边界符号本身不会和任何字符匹配。 Python字符串 \A, \Z 都是两个字符,而不是像\n那样的一个字符。 print(\A\Z) #\A\Z 边界符号 import re def search(pattern,string): x = re.search(pattern,string) if x != None: print(x.group()) else: print(None) m = \Ahow are search(m,ahow are you) #None search(m,how are you) #how are m = are you\Z search(m,how are you?) #None search(m,how are you) #are you search(a.+bc*,dbaegsfbcef) #aegsfbc search(a.+bc*\Z,dbaegsfbcef) #None search(a.+bc*\Z,dbaegsfbccc) #aegsfbccc * 边界符号 * \b 表示此处应为单词的左边界或右边界,即不
文档评论(0)