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 ...
 
随机推荐
- python selenium点滴
			
from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Ch ...
 - VScode 安装必备
			
1.运行程序:
 - hmm 软件的使用
			
1)使用HMM模型搜索序列数据库(以青蟹蛋白库为例,简写为qingxie.pep),同源参考序列(query.fas) hmmbuild: 用多重比对序列构建HMM模型:hmmsearch: 使用HM ...
 - rsa 公钥 私钥
			
如果用于加密解密,那就是用公钥加密私钥解密(仅你可读但别人不可读,任何人都可写)如果用于证书验证,那就是用私钥加密公钥解密(仅你可写但别人不可写,任何人都可读) 最后,RSA的公钥.私钥是互相对应的. ...
 - keynote
			
[keynote] 1.如何保证文档加载完才运行代码? 2.元素选择器. 3.属性选择器. 4.更新css. 5.更复杂的例子. 6.常用事件. 7.hide & slow 8.您可以使用 t ...
 - 第八章 高级搜索树 (b3)B-树:查找
 - 几个小模板:topology, dijkstra, spfa, floyd, kruskal, prim
			
1.topology: #include <fstream> #include <iostream> #include <algorithm> #include & ...
 - struck 模块
			
struck.pack(type,num) type : 是num的类型 num : int类型 r = struck.pack 把一个num内容打包成一个c规定的字节bytes的个数 struck ...
 - 【校招面试 之 C/C++】第15题 C 回调函数
			
转自:https://segmentfault.com/a/1190000008293902 做略微改动 什么是回调函数 我们先来看看百度百科是如何定义回调函数的: 回调函数就是一个通过函数指针调用的 ...
 - 基于快速排序的数组划分:2组 3组 K组(sort color)大小写排序 · Partition Array
			
2组: [抄题]: 给出一个整数数组 nums 和一个整数 k.划分数组(即移动数组 nums 中的元素),使得: 所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回数组划分的位置,即数组中 ...