Python学习-38.Python中的正则表达式(二)
在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中的正则表达式(二)的更多相关文章
- Python学习笔记6-Python中re(正则表达式)模块学习
今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. re.match re.match 尝试从 ...
- python学习_数据处理编程实例(二)
在上一节python学习_数据处理编程实例(二)的基础上数据发生了变化,文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年 ...
- Python学习day09 - Python进阶(3)
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python学习day05 - Python基础(3) 格式化输出和基本运算符
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python学习-37.Python中的正则表达式
作为一门现代语言,正则表达式是必不可缺的,在Python中,正则表达式位于re模块. import re 这里不说正则表达式怎样去匹配,例如\d代表数字,^代表开头(也代表非,例如^a-z则不匹配任何 ...
- Python 学习 第十篇:正则表达式 - re
规则表达式(Regular Expression, RE),又称作正则表达式,通常用于检索.替换符合指定规则的文本,正则表达式定义的规则,称作模式(Pattern),即正则表达式的作用是从文本中查找到 ...
- Python for Informatics 第11章 正则表达式二(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 11.1 正则表达式的字符匹配 ...
- python学习(12)使用正则表达式
1.正则表达式知识 符号 解释 示例 说明 . 匹配任意字符 b.t 可以匹配bat / but / b#t / b1t等 \w 匹配字母/数字/下划线 b\wt 可以匹配bat / b1t / b_ ...
- Python学习day07 - Python进阶(1) 内置方法
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
随机推荐
- drupal sql 源码解析query.inc 文件
query.inc 文件: sql语句: $this->condition($field);1707 line public function condition($field, $value ...
- java 元数据
什么是元数据? 元数据是指用来描述数据的数据,更通俗一点,就是描述代码间关系,或者代码与其他资源(例如数据库表)之间内在联系的数据.在一些技术框架,如struts.EJB.hibernate就不知不觉 ...
- keras—神经网络CNN—MNIST手写数字识别
from keras.datasets import mnist from keras.utils import np_utils from plot_image_1 import plot_imag ...
- 解决python中csv文件中文写入问题
一.前言 一般来说,为了方便,使用python的时候都会使用csv模块去写数据到csv文件,但是写入中文的时候,经常会报错: UnicodeEncodeError: 'ascii' codec can ...
- 向mysql数据库插入大量数据
1. package com.zy.demo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.P ...
- JAVA list集合两种去重方法
结果: 转载地址:http://geek.csdn.net/news/detail/127940
- Algorithmic Trading[z]
Algorithmic Trading has been a hot topic for equity/derivative trading over a decade. Many ibanks an ...
- Django之Form功能
一 什么是Form?什么是DjangoForm? Django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm 关于django的表单系统,主要分两种 ...
- Java WebService 知识点汇总
java webservice 获取传入IP axis.jar servlet.jar MessageContext mMsgContext = MessageContext.getCurren ...
- C#的一些方法读程序转c++
1.Array.Copypublic static void Copy( Array sourceArray, int sourceIndex, Array destinationArray, int ...