在Python中,正则表达式还有较其他编程语言有特色的地方。那就是支持松散正则表达式了。

在某些情况,正则表达式会写得十分的长,这时候,维护就成问题了。而松散正则表达式就是解决这一问题的办法。

用上一次分组的代码作为例子:

 import re
userinput = input("please input test string:")
m = re.match(r'(\d{3,4})-(\d{8})',userinput)
if m:
print('区号:' + m.group(1))
print('号码:' + m.group(2))
else:
print('格式错误')

现在假设我们离编写该代码隔了很长一段时间了,并不知道\d{3,4}和\d{8}的意义了。

如果一开始就写注释那多好,但我们总不能写

 # \d{3,4}代表区号,\d{8}代表号码

这样的注释吧。Don't repeat youself。松散正则表达式就用上了。

 import re
userinput = input("please input test string:")
regex = r'''
(
\d{3,4} # 区号
)
- # 区号与号码间的分隔符
(
\d{8} # 号码
)
'''
m = re.match(regex,userinput,re.VERBOSE)
if m:
print('区号:' + m.group(1))
print('号码:' + m.group(2))
else:
print('格式错误')

'''代表多行文本(同时也可用作代表文档注释)。

则值得注意的是,现在字符串中多出了很多空白以及注释(尽管他们现在作为字符串的一部分被编译),但运行的效果是一致的。

还有一点要注意的是,在re.match方法的最后,使用了re.VERBOSE参数,这指明当前正则表达式为松散正则表达式。在re.split及其他方法中,若需要使用松散正则表达式,则也需要使用该参数。

Python学习-38.Python中的正则表达式(二)的更多相关文章

  1. Python学习笔记6-Python中re(正则表达式)模块学习

    今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. re.match re.match 尝试从 ...

  2. python学习_数据处理编程实例(二)

    在上一节python学习_数据处理编程实例(二)的基础上数据发生了变化,文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年 ...

  3. Python学习day09 - Python进阶(3)

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  4. Python学习day05 - Python基础(3) 格式化输出和基本运算符

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  5. Python学习-37.Python中的正则表达式

    作为一门现代语言,正则表达式是必不可缺的,在Python中,正则表达式位于re模块. import re 这里不说正则表达式怎样去匹配,例如\d代表数字,^代表开头(也代表非,例如^a-z则不匹配任何 ...

  6. Python 学习 第十篇:正则表达式 - re

    规则表达式(Regular Expression, RE),又称作正则表达式,通常用于检索.替换符合指定规则的文本,正则表达式定义的规则,称作模式(Pattern),即正则表达式的作用是从文本中查找到 ...

  7. Python for Informatics 第11章 正则表达式二(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.1 正则表达式的字符匹配 ...

  8. python学习(12)使用正则表达式

    1.正则表达式知识 符号 解释 示例 说明 . 匹配任意字符 b.t 可以匹配bat / but / b#t / b1t等 \w 匹配字母/数字/下划线 b\wt 可以匹配bat / b1t / b_ ...

  9. Python学习day07 - Python进阶(1) 内置方法

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

随机推荐

  1. drupal sql 源码解析query.inc 文件

    query.inc 文件: sql语句: $this->condition($field);1707 line public function condition($field, $value ...

  2. java 元数据

    什么是元数据? 元数据是指用来描述数据的数据,更通俗一点,就是描述代码间关系,或者代码与其他资源(例如数据库表)之间内在联系的数据.在一些技术框架,如struts.EJB.hibernate就不知不觉 ...

  3. keras—神经网络CNN—MNIST手写数字识别

    from keras.datasets import mnist from keras.utils import np_utils from plot_image_1 import plot_imag ...

  4. 解决python中csv文件中文写入问题

    一.前言 一般来说,为了方便,使用python的时候都会使用csv模块去写数据到csv文件,但是写入中文的时候,经常会报错: UnicodeEncodeError: 'ascii' codec can ...

  5. 向mysql数据库插入大量数据

    1. package com.zy.demo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.P ...

  6. JAVA list集合两种去重方法

    结果: 转载地址:http://geek.csdn.net/news/detail/127940

  7. Algorithmic Trading[z]

    Algorithmic Trading has been a hot topic for equity/derivative trading over a decade. Many ibanks an ...

  8. Django之Form功能

    一 什么是Form?什么是DjangoForm? Django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm 关于django的表单系统,主要分两种 ...

  9. Java WebService 知识点汇总

    java webservice 获取传入IP axis.jar    servlet.jar MessageContext mMsgContext = MessageContext.getCurren ...

  10. C#的一些方法读程序转c++

    1.Array.Copypublic static void Copy( Array sourceArray, int sourceIndex, Array destinationArray, int ...