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

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

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

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

 # coding: utf-8

 # 导入re, RegEx:(Regular Expressions)正则表达式
import re # 一般来说,用 "" 包围起来的就是(string)字符串
# print type(txt)可打印txt的类型
txt = "Welcome to our school!"
# 按空格分割字符串
print re.split(" ", txt)
print "--" * 20
# 或者写成txt.split()的形式
print txt.split(" ")

点我

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAABACAIAAAC7lLYAAAAEvklEQVR4nO2cS5btIAhFM/9RZWivl8oSRUQNeN/eLRMED2Do1Oe6AAAAAAAA4P/mfqFs6L5UIjgODWSfqtEiL4k8SVSPDspoa4ksX4rbmvkzbMLAKmBgfRM56twfG1i+79fom5Gu3B0Dy+3yAQysbyJHnXvWwOoeMTOwjBty4ZNrGVgzpdR9W9bnzXsxFDmEW6BsCNDXoNuF6puiR6nyWnLrhnwt1mtuYHXJU38TPrlFk2ScW2A/WvdVrNLkUPU97nwD6RZZbm45JknK3YVuOjPW956ubEfWevCM+OQ+XnJxvYpYfdSP1n0tj5OqQmgpyanZ2IVif7E5PIs3Rs0fPyryCtNMPbP1ooNP7uMlF9WY9jboevTIS1SF0FKSU7OxC4o1PIUCXdWSO+mwugUMkbAdGj65ciJUL2WB5egll2NGVQgtJXq+URi7YLQmQbkYS+6kw+oWMETajtTxyX285OJiYI3TUqLnG4WxC0ZrQoq7seROOqz6S6O1yxEd+cMn9/GSi0v0e+jo6l0ZepxUFUJLmJ5vFEt6lAqpaiajyeLI+mwtWs6ONPHJvRsoG3T3JdbnUS4ske2Jj3oZwzqqYQ++SKlJlbTeSwdWhowUMdUNjshda0vAEDuKuRG33O4tVKrcbYOlQ63uVhfGyF32ddddDWPkaYH1sN0eXYar4jt6MkgrrPvWdd+MRr4YWJLD5CbgxHKdqFnn9zKK4rAJoA9vKDixSidq1vm9jEI48ts/UjQATMO3DwAAAAAAAAAAAAAAAAAAAAAAAAAASdH/tBIrVqxY81iTysKKFStWaQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgFG6/8mhamr9X4hVhwayT9VokZdEniSqRwdltLVEli/Fbc38GTZhYBUwsL6JHHXujw0s3/dr9M1IV+6OgeV2+QAG1jeRo849a2B1j5gZWMYNufDJtQysmVLqvi3r8+a9GIocwi1QNgToa9DtQvVN0aNUeS25dUO+Fus1N7C65Km/CZ/cokkyzi2wH637KlZpcqj6Hne+gXSLLDe3HJMk5e5CN50Z63tPV7Yjaz14RnxyHy+5uF5FrD7qR+u+lsdJVSG0lOTUbOxCsb/YHJ7FG6Pmjx8VeYVppp7ZetHBJ/fxkotqTHsbdD165CWqQmgpyanZ2AXFGp5Cga5qyZ10WN0ChkjYDg2fXDkRqpeywHL0kssxoyqElhI93yiMXTBak6BcjCV30mF1CxgibUfq+OQ+XnJxMbDGaSnR843C2AWjNSHF3VhyJx1W/aXR2uWIjvzhk/t4ycUl+j10dPWuDD1OqgqhJUzPN4olPUqFVDWT0WRxZH22Fi1nR5r45N4NlA26+xLr8ygXlsj2xEe9jGEd1bAHX6TUpEpa76UDK0NGipjqBkfkrrUlYIgdxdyIW273FipV7rbB0qFWd6sLY+Qu+7rrroYx8rTAethujy7DVfEdPRmkFdZ967pvRiNfDCzJYXITcGK5TtSs83sZRXHYBNCHNxScWKUTNev8XkYhHPntHykaAKbh2wcAAAAAAAAAAAAA+D+x/06a7+cIPt/dP7PY9Nt3xnOrp8hG3LZfs6w6jmahuMx0f4kAgId/1W1+fMsmhrsAAAAASUVORK5CYII=" alt="" />

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

# coding: utf-8

import re

data = (
"Mountain View, CA 94040",
"Sunnyvale, CA",
"Los Altos, 94023",
"Cupertino 95014",
"Palo Alto CA",
) # 按元组的元素迭代,也就是一行行列出来(eachline)
for eachline in data:
# 切掉5个连续的数前面的空格|切掉2个连续的大写字母前面的空格
print re.split(r", | (?=\d{5}| (?=[A-Z]{2}))", eachline)
# 我们要的是总的分组/子组,里面的用(?: )括起来表示不保存!
# print re.split(r", | (?=(?:\d{5}|[A-Z]{2}))", eachline)

? 其实上面的正则表达式还可以写成这种

", |(?= \d{5}) |(?= [A-Z]{2}) "或

", |(?= (?:\d{5}|[A-Z]) "

不过想不通这种把空格放在最后面的原理是什么!

aaarticlea/png;base64,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" alt="" />

.: 是句点,又叫点号,匹配除 '\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的更多相关文章

  1. re正则模块(二十五)

    一:什么是正则? 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.(在Python中)它内嵌在Python中,并通过 r ...

  2. 16_Java正则和日期对象

    01正则表达式的概念和作用 * A: 正则表达式的概念和作用 * a: 正则表达式的概述 * 正则表达式也是一个字符串,用来定义匹配规则,在Pattern类中有简单的规则定义. 可以结合字符串类的方法 ...

  3. java core 正则 "\\PL+"的意义

    java core第十版中的第一章中出现了一个正则"\\PL+",根据注释(Split into words:noletters are delimiters)提示,这个正则的意思 ...

  4. Java 正则初探

    正则表达 初探* 走进沼泽 问题引出 问题:判断一个String字符串是否为数字字符串 将字符串转换为字符数组 判断每一个字符是否在"0~9"范围之间 public class T ...

  5. Python 正则表达模块详解

    Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...

  6. 日志(logging)与正则(re)模块

    logging模块 #日志:日常的流水 =>日志文件,将程序运行过程中的状态或数据进行记录,一般都是记录到日志文件中 #1.logging模块一共分为五个打印级别 debug.info.warn ...

  7. python基础之正则表达式

    正则表达式语法 正则表达式 (或 RE) 指定一组字符串匹配它;在此模块中的功能让您检查一下,如果一个特定的字符串匹配给定的正则表达式 (或给定的正则表达式匹配特定的字符串,可归结为同一件事). 正则 ...

  8. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  9. python学习之深入

    一.迭代器和生成器 1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退. ...

随机推荐

  1. schemes-universalLink-share_IOS-android-WeChat-chunleiDemo

    schemes-universalLink-share_IOS-android-WeChat-chunleiDemo The mobile terminal share page start APP ...

  2. 高效开发之SASS篇

    作为通往前端大神之路的普通的一只学鸟,最近接触了一样稍微高逼格一点的神器,特与大家分享~ 他是谁? 作为前端开发人员,你肯定对css很熟悉,但是你知道css可以自定义吗?大家都知道,js中可以自定义变 ...

  3. bootstrap的总结1 - 网格系统

    1.Bootstrap 网格系统 1)下表总结了 Bootstrap 网格系统如何跨多个设备工作: 2)Bootstrap 网格的基本结构 <div class="container& ...

  4. myeclipse里如何添加mysql数据库

    首先声明,这只是我本人的一些经验,不代表任何集体和个人的利益,请勿没事就当喷子来喷我.我希望对一些对这方面学习的朋友有帮助,当然,我自己也是菜鸟级别啦!!!!!!!!!!!! 首先是电脑必要安装了my ...

  5. HDOJ_就这么个烂题总是WA先放这把

    #include<stdio.h> __int64 A[100]={0}; __int64 B[100]={0}; __int64 SUM[100]={0}; int main() {in ...

  6. 【转】Zookeeper-Watcher机制与异步调用原理

    声明:本文转载自http://shift-alt-ctrl.iteye.com/blog/1847320,转载请务必声明. Watcher机制:目的是为ZK客户端操作提供一种类似于异步获得数据的操作. ...

  7. robotium如何定位控件?

    search类获取当前所有的view,然后根据类型或者文本去筛选,找到view后获取坐标,然后点击坐标.本质都是通过坐标点击.solo.clickonScreen方法,底层调用MotionEvent类 ...

  8. rte_mempool内存管理

    DPDK以两种方式对外提供内存管理方法,一个是rte_mempool,主要用于网卡数据包的收发:一个是rte_malloc,主要为应用程序提供内存使用接口.本文讨论rte_mempool.rte_me ...

  9. python setup.py install 报错ImportError: No module named setuptools

    学习光荣之路python课程时,使用python setup.py install安装其他模块时,第一次安装某模块成功了.安装另一模块却报错ImportError: No module named s ...

  10. 浏览器标题栏添加小logo图片,记录一下,方便以后用

    效果如图:这是富连网的logo的实现,只需一行代码,我就写给自己和那些不知道的人吧 <link rel="icon" type="image/x-icon" ...