正则只能出现特定字符_python正则表达式的简单使用总结

12fa86d7ca630768a85dc89cc33307b2.png

原文作者:小哲,雷锋网

在编程中,经常会涉及到字符串的操作,一个常用的策略就是利用split函数,然后对于特定的字符串进行匹配,但是这种方法格式复杂,可复用性较差。

正则表达式是处理字符串匹配一个必不可少的方法,定义一个语义规则,来进行特定的字符字符串的规则。

正则表达式速查表

1 元字符,用特殊符号表示一类元素

语法说明语法示例匹配字符
.匹配除换行符以外的任意字符(这是一个小红点儿)a.cabc
\w匹配字母或数字或下划线 (可以记成 word )a\wca2c
\b匹配一个单词的边界foo\b匹配foo,foo. 但不匹配foobar
\B匹配空字符串,但 不 能在词的开头或者结尾py\B匹配python py2 py3, 但不匹配py.
^匹配字符串的开始^abcabc
\W匹配非字母数字下划线a\Wba b
\d匹配数字 (可记成 digit )a\dca2c
\D匹配非数字a\Dcabc
\s匹配任意的空白符 (可以记成 space )a\sba b
\S匹配非空白符a\Sbacb
a|b匹配字符a或字符b。(长的写前面,短的写后面)abc|defabc 或def
()匹配括号内的表达式,也表示一个组(abc)abc
[...]匹配字符组中的字符a[bcd]eabe 或ace或ade
[^...]匹配除了字符组中字符的所有字符a[bcd]ease

2 字符组 [],限制范围,某个位置只能出现这个范围内的某个元素。

语法说明语法示例匹配字符
[0123456789]只能匹配0-9数字,可写成[0-9][0123456789]0或1或2...
[a-z]只能匹配小写字母[a-z]d
[A-Z]只能匹配大写字母[A-Z]D
[0-9a-fA-F]可以匹配16进制的某个数[0-9a-fA-F]D

3 量词,表示数量,约束前面元字符出现的次数。

语法说明语法示例匹配字符
*重复前一个字符零次或多次abc*ab 或abccc
+重复前一个字符一次或多次abc+abc 或abccc
?重复前一个字符零次或一次abc?ab 或abc
{n}重复前一个字符n次abc{3}abccc
{n,}重复前一个字符至少n次abc{3,}abccccc
{n,m}重复前一个字符n到m次abc{1,5}abc或abcc或abccccc

re模块包函数

# 导入包import re
################re.compile() 编译# 将正则表达式编译成一个正则表表达式对象。# 如果一个正则表达式在程序中只用一次,就没必要编译了。# 如果同一个正则表达式要被多次使用时,就需要对表达式进行编译,以便后续使用。
例如:匹配www.baidu.com
pattern = r'w*\.[a-z]{5}\.[a-z]*'
prog = re.compile(pattern)
string = 'www.baidu.com'
result = prog.match(string)# 如果匹配成功返回match对象,不成功返回None
###################re.findall()  返回列表# 一、re.findall(正则表达式,待匹配的字符串,flags=0)# 二、findall默认只显示分组中的,分组有优先级。
pattern = r'w{3}\.(baidu|oldboy)\.com'
prog = re.compile(pattern)
ret = re.findall(prog, 'www.baidu.com')
print(ret)# 结果:['baidu']# 三、加上 ?: 取消分组的优先# ret = re.findall('www\.(?:baidu|oldboy)\.com', 'www.baidu.com')# print(ret)# 结果:['www.baidu.com']
###################re.match()#从头匹配
re.match(pattern, string, flags=0)#如果 string 开始的0或者多个字符匹配到了正则表达式样式,就返回一个相应的 匹配对象 。如果没有匹配,就返回 None ;#需要group(),才能返回值
###################re.search()#扫描整个 字符串 找到匹配样式的第一个位置,并返回一个相应的 匹配对象。如果没有匹配,就返回一个 None ;注#同样需要group(),才能的返回值
####################re.sub()、re.subn()# re.sub()
re.sub(r'\sAND\s', ' & ', 'Baked Beans And Spam', flags=re.IGNORECASE) # 【表达式表示替换内容,要替换的新元素,替换对象,替换次数】# 结果为:'Baked Beans & Spam'# re.subn()
re.subn(r'\sAND\s', ' & ', 'Baked Beans And Spam', flags=re.IGNORECASE) # 【返回元组,前面是替换完的结果,后面是替换的次数】
结果是('Baked Beans & Spam', 1)

b7cf2a127d59d5f738fb312df96abdea.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL配置日志服务器_mysql配置数据库日志

mysql配置数据库日志云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷…

python外星人入侵不显示子弹_【Python】python外星人入侵,武装飞船,代码写好后,不显示子弹...

按照书上写的武装飞船,写到能够左右移动了,但到了射击(装子弹)时候,按照书上的代码照搬了,运行时没显示代码有问题,但就是按了空格键,不见有子弹,其他都正常。代码:alien_invasion.p…

python常见的异常类有哪些_Python常见异常类型

标签:常见 nic 警告 werror pytho 无效 本地变量 计算 pointBaseException     所有异常的基类SystemExit             解释器请求退出KeyboardInterrupt          用户中断执行(通常是输入^C)Exc…

mysql dos 下切换连接_如何在dos下连接进入mysql对数据库进行操作

一、:windowsR 进入命令命令提示符输入 net start mysql若出现系统错误,要将命令提示符以管理员身份运行若出现不是内部指令,进入下面环境变量设置界面,配置path路径1.进入系统查看界面,点击高级系统设置2&#xff0c…

mysql二级缓存redis_SpringBoot+Mybatis+redis(二级缓存)搭建

刚刚开始接触Spring Boot,因为极简单的配置开发,搭建一个通用的Spring BootMybaitisredis的开发框架。一、用maven构建项目,pom.xml文件如下:org.springframework.bootspring-boot-starter-parent1.5.1.RELEASEorg.springframewor…

mysql自定义两个条件排序_使用MySQL中的两个不同列进行自定义排序?

为此,将ORDER BY子句与CASE语句一起使用。让我们首先创建一个表-mysql> create table DemoTable1610-> (-> Marks int,-> Name varchar(20)-> ) ;使用插入命令在表中插入一些记录-mysql> insert into DemoTable1610 values(85,John);mysql> in…

java获取文件大小_Java中获取文件大小的详解及实例代码

Java 获取文件大小今天写代码时需要实现获取文件大小的功能,目前有两种实现方法,一种是使用File的length()方法;另外一种是使用FileInputStream的available()方法,当InputStream未进行read操作时,available()的大小应该…

java访问权限friendly_Java的访问权限

一.Java访问权限饰词(access specifiers)Java有public、protect、friendly、private四种访问权限,并且这四访问权限的访问范围越来越小。1. friendly1) 果一个class内的数据成员或方法没有任何权限饰词,那么它的缺省访问权限就是f…

java 0 255_java – 什么(float)(par4 16255)/ 255.0F;意思?

带alpha通道的RGB(通常称为RGBA或aRGB)是四个字节打包成一个整数.AAAAAAAARRRRRRRRBBBBBBBBGGGGGGGG // the original par4, each char represents one bit.// where ARBG stands for alpha, red, blue and green bit.shift和运算符用于检索每个字节.例如,par4>> 16&…

java ie下载文件名乱码问题_php中强制下载文件的代码(解决了IE下中文文件名乱码问题)...

中间遇到一个问题是提交的中文文件名直接放到header里在IE下会变成乱码,解决方法是将文件名先urlencode一下再放入header,如下。$file_name urlencode($_REQUEST[filename]);header("Pragma: public"); header("Expires: 0");heade…

java如何获得当前路径_在java中如何得到当前路径

归纳一些网上取java路径的方法:注明:如果从ANT启动程序,this.getClass().getResource("")取出来的比较怪,直接用JAVA命令行调试就可成功。得到classpath和当前类的绝对路径的一些方法获得CLASSPATH之外路径的方法&#…

java继承总结_JAVA笔记:Java中的继承总结

继承:在Java中使用extends关键字来实现类的继承 ,extends意思就是派生,所以子类也叫派生类,继承的主要目的是扩展类的内容操作格式: class A{}; class B extends A{};子类B可以继承父类A中的公用方法,也可…

java正则表达式 类_java正则表达式相关类的使用

import java.util.regex.Matcher;import java.util.regex.Pattern;public class TestZhengZe {public static void main(String[] args) {//匹配数字Pattern mac Pattern.compile("-?(0|([1-9][0-9]*))(\\.[0-9])?");System.out.println(mac.matcher("101.00…

Java转置_Java实现单链表的逆转置

单链表逆转置的递归与非递归方式package link.reverse;// 定义一个单链表class Node {//变量private int record;//指向下一个对象private Node nextNode;public Node(int record) {this.record record;}public int getRecord() {return record;}public void setRecord(int re…

单利 java_Java设计模式-单利模式

单例模式作为对象的创建模式,单例模式确保其某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类。单例模式有以下特点:1、单例类只能有一个实例2、单例类必须自己创建自己的唯一实例3、单例类必须给其…

esp8266接7735_基于8266的ESPEASY固件接入HASS的教程(可无脑接入各类传感...

首先国际惯例,先放上成果:QQ图片20170629160143.png (172.48 KB, 下载次数: 3)2017-6-29 16:03 上传如上图所示,楼主把颗粒物传感器和二氧化碳传感器加入到了HASS里,当然,论坛之前也有诸位大神提供过类似固件和方法来实现这一目标…

java定义private_java9开始——接口中可以定义private私有方法

在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法。只允许我们定义public访问权限的方法、抽象方法或静态方法。但是从Java 9 开始,Interface 接口中允许定义私有方法和私有静态方法。下面我们就来…

java poi生成excel文件_java poi 导出Excel文件

1,导包 poi-3.9-XXX.JAR2, 创建一个实体对象public class Student implements Serializable {/****/private static final long serialVersionUID 1L;private int id;private String name;private int age;private Date borth;public Student(int id, String name…

java中捕获异常的作用_在Java中捕获通用异常?

您可以传递Class对象并以编程方式检查。public static void checkForException(String message,Class exceptionType, ExpectedExceptionBlock block) {try {block.exceptionThrowingCode();} catch (Exception ex) {if ( exceptionType.isInstance(ex) ) {return;} else {thro…

java如何循环调用方法_Java:调用方法的“中断”循环?

我的小程序有点问题。我有一个JOptionPane要求一个数字,如果该数字小于10,则一个循环会一直持续下去,并永远做下去,继续询问数字。 在该循环内,我调用一个方法,将int作为参数。 在该方法中,我需…