码迷,mamicode.com
首页 > 其他好文 > 详细

【卷一】re.split应用

时间:2016-08-23 01:12:22      阅读:559      评论:0      收藏:0      [点我收藏+]

标签:

有时候,用re.split()匹配字符串会比findall,search, match等

正则表达式对象方法方便简洁很多!

参考: 《Python核心编程(3rd)》—p23

 

如果给定分隔符而不是使用像句点 ‘.‘、‘\w‘这样的特殊符号来构成正则表达式,那么re.split()和str.split是一样的

技术分享
 1 # coding: utf-8
 2 
 3 # 导入re, RegEx:(Regular Expressions)正则表达式
 4 import re 
 5 
 6 # 一般来说,用 "" 包围起来的就是(string)字符串
 7 # print type(txt)可打印txt的类型
 8 txt = "Welcome to our school!"
 9 # 按空格分割字符串
10 print re.split(" ", txt)
11 print "--" * 20
12 # 或者写成txt.split()的形式
13 print txt.split(" ")
点我

技术分享

 

下面进入主题,用re.split()来做点事!附上用findall捣鼓的匹配

技术分享
 1 # coding: utf-8
 2 
 3 import re
 4 
 5 data = (
 6     "Mountain View, CA 94040",
 7     "Sunnyvale, CA",
 8     "Los Altos, 94023",
 9     "Cupertino 95014",
10     "Palo Alto CA",
11     )
12 
13 
14 for i in data:
15     # 按后面是5个连续的数字分|按后面是2个连续的大写字母分
16     # 我们要的是总的分组/子组,里面的用(?: )括起来表示不保存!
17     print re.split(r", |(?= (?:\d{5}|[A-Z]{2})) ", i)
18     
19     # 按每行字符串的逗号分|按2个连续的大写字母分|按5个连续的数字分|按1个或多个单词+空格分
20     # 我们需要的是外面" "围起来总的分组,也可以加括号更明显地表示,所以里面的子组不保存用(?:)括起来
21     # print re.findall(r".+,|[A-Z]{2}|\d{5}|(?:\w+ )+", i)
展开

技术分享

 

 .: 是句点,又叫点号,匹配除 ‘\n‘ 外的任何字符

|  :管道符号,a|b 表示匹配a或b,因此又叫择一匹配符号

+: 重复前面的字符1到多次, ‘.+‘ 就是匹配除‘\n‘外的字符多次,也就是

我们要匹配的字符串有多少个字符,它就匹配多少个,‘.+,‘ 匹配任何字符

直到遇到逗号为止!

 

\w:匹配字母和数字,\w+就是匹配一个单词或多个字母或数字,(\w+ )+

表示匹配多少字母和空格!

\d:是匹配数字,{5}表示匹配前面的字符5次,\d{5}就是匹配5个数字,

 

$: 表示从后开始匹配,  \d{5}$ 表示匹配后面是五位数字的字符,相对应

的脱字符 ‘^‘ 表示从头开始匹配

[A-Z]是匹配26个大写字母的任一个,[A-Z]{2}就是匹配两个大写字母 !

 

(?= ):比如(?= (?:\d{5})表示它后面是空格加五位数字的字符,好吧,

乱再来,比如,(\w+)(?= "abc")表示匹配后面是abc的 \w+ 即字母或

者数字!

(?:  ): 通常加括号的比如(\w+)都是我们要的分组,也就是子组,但是有

一些不是我们要的,却不得不要的,所以给它这个符号,表示不保存该分组!

 

【卷一】re.split应用

标签:

原文地址:http://www.cnblogs.com/Ruby517/p/5797550.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!