Python学习-37.Python中的正则表达式
作为一门现代语言,正则表达式是必不可缺的,在Python中,正则表达式位于re模块。
import re
这里不说正则表达式怎样去匹配,例如\d代表数字,^代表开头(也代表非,例如^a-z则不匹配任何小写字符),$代表结尾,这些百科或者其他书籍都有。
例子一,字符串中是否包含数字:
import re
userinput = input("please input test string:")
if re.match(r'\d',userinput):
print('contain number')
else:
print('no number in input string')
假如输入的不包含数字的话,则re.match方法返回None,而含数字的话,则会返回一个Match对象。
例子二,分割字符串:
import re
userinput = input("please input test string:")
temp = re.split(r'\s+',userinput)
print(temp)
\s代表任意空白字符(指空格、Tab等等的空白字符),+号表示1个或多个。那么这段代码的作用就是按照空白分割字符。例如字符串"a b dc"得到的将会是['a','b','dc']的列表。普通的字符串split函数要做到此功能则很难做到。
例子三,分组:
有时候,我们需要提取字符串中的一些部分,例如电话号码,由三位或四位的区号和八位的电话号码组成。
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('格式错误')
分组使用(),这是正则表达式的基本。m.group从0开始计数,而0为输入的字符串。
例子四,贪婪匹配:
import re
userinput = input("please input test string:")
m = re.match(r'^(\d+)(0*)$',userinput)
if m:
print(m.groups())
else:
print('格式错误')
输入102500,我们得到的是('102500','')。
而我们想要的结果是('1025','00')。这里就需要使用非贪婪匹配了。因为Python里正则表达式是默认使用贪婪模式的(C#中也是)。
修改代码如下:
import re
userinput = input("please input test string:")
m = re.match(r'^(\d+?)(0*)$',userinput)
if m:
print(m.groups())
else:
print('格式错误')
即在\d+后加上一个?号。这样结果就会如我们所想的一样。
注意的是,非贪婪模式比贪婪模式效率要差,因此非到贪婪模式匹配不了就不要使用非贪婪模式。
例子五,正则表达式预编译:
使用re.compile方法。在多处需要使用到同一个正则表达式的时候,我们应该预编译该正则表达式,然后直接使用该方法返回的对象。
Python学习-37.Python中的正则表达式的更多相关文章
- Python学习笔记6-Python中re(正则表达式)模块学习
今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. re.match re.match 尝试从 ...
- 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学习-38.Python中的正则表达式(二)
在Python中,正则表达式还有较其他编程语言有特色的地方.那就是支持松散正则表达式了. 在某些情况,正则表达式会写得十分的长,这时候,维护就成问题了.而松散正则表达式就是解决这一问题的办法. 用上一 ...
- Python 学习 第十篇:正则表达式 - re
规则表达式(Regular Expression, RE),又称作正则表达式,通常用于检索.替换符合指定规则的文本,正则表达式定义的规则,称作模式(Pattern),即正则表达式的作用是从文本中查找到 ...
- 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- ...
- Python学习笔记—Python基础1 介绍、发展史、安装、基本语法
第一周学习笔记: 一.Python介绍 1.Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...
- python学习笔记-python程序运行
小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...
随机推荐
- svn搭建相关
转载至:http://blog.163.com/longsu2010@yeah/blog/static/173612348201202114212933/ 安装步骤如下: 1.yum install ...
- Petya and Graph(最小割,最大权闭合子图)
Petya and Graph http://codeforces.com/contest/1082/problem/G time limit per test 2 seconds memory li ...
- VMware安装Windows注意
安装Windows通用步骤,分区,重建分区表,重写MBR引导.安装即可. VMware安装Windows 如果进不了CM/ROM,在.vmx文件里: 加入一行:bios.forceSetupOnce ...
- [leetcode]543. Diameter of Binary Tree二叉树直径
Given a binary tree, you need to compute the length of the diameter of the tree. The diameter of a b ...
- 简述Markdown的使用方法
MarkdownPad Document Markdown的使用技巧 一.标题 一个”#“表示H1.“##”表示H2... 二.列表 第一点 第二点 注意1.2. -与文本之间要有一个空格 这一点 三 ...
- 设置 svn 与 web线上同步
默认你已经配置好了svn服务 1.假设我们的线上网站目录为:/data/www/xxx 2.假设svn的仓库目录为:/data/svn/repo 一.checkout一份svn到线上网站目录 svn ...
- 阈值分割与XLD轮廓拼接——第4讲
一.阈值分割 阈值分割算子众多: threshold :这是最基本最简单的阈值算子. binary_threshold :它是自动阈值算子,自动选出暗(dark)的区域,或者自动选出亮(light)的 ...
- 解决lhgDialog插件在IE11浏览器的BUG
项目中用到一款lhgDialog插件,最近在Win7系统IE11浏览器打上最新补丁(KB4012204)后,对话框内容的高度变成默认高度,经过调试,修改了lhgDialog里的iframe高度,问题解 ...
- 深入浅出 JMS(一) - JMS 基本概念
深入浅出 JMS(一) - JMS 基本概念 一.JMS 是个什么鬼 JMS 是 Java Message Service 的简称,即 Java 消息服务.什么是消息服务呢,我们来看一下 Oracle ...
- JVM知识
堆(Heap)和非堆(Non-heap)内存 简单来说堆就是Java代码可及的内存,是留给开发人员使用的:非堆就是JVM留给 自己用的. 堆内存分配 JVM初始分配的内存由-Xms指定,默认是 ...