25、正则表达式

一 正则表达式

1 功能:字符串的模糊匹配查询

"hello".find("yuan\n  egon\nalex")

2 元字符

re.findall(‘查找对象‘,‘内容‘)----匹配出所有条件的元素

元字符包括:. ^ $ * + ? { } [ ] | ( ) \

. :除换行符以外的任意“一个”符号

ret=re.findall("李.","李杰,李刚,王超,占山")
print(ret)

^ :只匹配字符串开始的位置

import re
ret=re.findall("^李.","yuan李杰,李刚,王超,占山,李莲英")
print(ret)

$ :只匹配字符串最后一个(末尾)位置

import re
ret=re.findall("y..n$","yabn李杰,李刚,王超,占山,李莲英")
print(ret)

重复元字符

* :(0,无穷)

import re
ret=re.findall("131\d*","1312312321,412341,131,32424,131234213423,123415234123324111,123412341234,12341234")
print(ret)

+ :(1,无穷)

import re
ret=re.findall("131\d+","1312312321,412341,131,32424,131234213423,123415234123324111,123412341234,12341234")
print(ret)

? :(0,1)

import re
ret=re.findall("-?\d+","131,41,-11,12,-4")
print(ret)

{} :指定次数

import re
ret=re.findall("\d{18}","12312321,412341,32424,1234213423,123415234123324111,123412341234,12341234")
print(ret)

二 转义符

1 反斜杠后边跟元字符去除特殊功能,比如\

2、反斜杠后边跟普通字符实现特殊功能,比如\d

\d  匹配任何十进制数;      它相当于类 [0-9]。
\D  匹配任何非数字字符;    它相当于类 [^0-9]。
\s  匹配任何空白字符;      它相当于类 [ \t\n\r\f\v]。
\S  匹配任何非空白字符;    它相当于类 [^ \t\n\r\f\v]。
\w  匹配任何字母数字字符;   它相当于类 [a-zA-Z0-9_]。
\W  匹配任何非字母数字字符; 它相当于类 [^a-zA-Z0-9_]
\b  匹配一个特殊字符边界,比如空格 ,&,#等

让我们看一下\b的应用:

ret=re.findall(r‘I\b‘,‘I am LIST‘)
print(ret)#[‘I‘]

接下来我们试着匹配下“abc\le”中的‘c\l’:

import re

ret=re.findall(‘c\l‘,‘abc\le‘)
print(ret)#[]

ret=re.findall(‘c\\l‘,‘abc\le‘)
print(ret)#[]

ret=re.findall(‘c\\\\l‘,‘abc\le‘)
print(ret)#[]

ret=re.findall(r‘c\\l‘,‘abc\le‘)
print(ret)#[]

# \b是特殊符号所以,‘abc\be‘前面需要加r
ret=re.findall(r‘c\\b‘,r‘abc\be‘)
print(ret)#[]

分组()

m = re.findall(r‘(ad)+‘, ‘add‘)
print(m)

ret=re.search(‘(?P<id>\d{2})/(?P<name>\w{3})‘,‘23/com‘)
print(ret.group())#23/com
print(ret.group(‘id‘))#23

元字符 |

ret=re.search(‘(ab)|\d‘,‘rabhdg8sd‘)
print(ret.group())#ab

字符集【】

#--------------------------------------------字符集[]
ret=re.findall(‘a[bc]d‘,‘acd‘)
print(ret)#[‘acd‘]

ret=re.findall(‘[a-z]‘,‘acd‘)
print(ret)#[‘a‘, ‘c‘, ‘d‘]

ret=re.findall(‘[.*+]‘,‘a.cd+‘)
print(ret)#[‘.‘, ‘+‘]

#在字符集里有功能的符号: - ^ \

ret=re.findall(‘[1-9]‘,‘45dha3‘)
print(ret)#[‘4‘, ‘5‘, ‘3‘]

ret=re.findall(‘[^ab]‘,‘45bdha3‘)
print(ret)#[‘4‘, ‘5‘, ‘d‘, ‘h‘, ‘3‘]

ret=re.findall(‘[\d]‘,‘45bdha3‘)
print(ret)#[‘4‘, ‘5‘, ‘3‘]
时间: 2024-10-11 09:00:39

25、正则表达式的相关文章

25 正则表达式

主要内容: 1 . 正则表达式的概念: 一种匹配字符串的规则(正则表达式是一种独立的语法,和python没关系) 2 . 正则表达式能做什么: a:可以制定一个规则 1): 来确认某一个字符串是否符合规则 2): 从大段的字符串中找到符合规则的内容 b: 程序领域: 1) :登录注册页的表单验证  web开发  要求简单语法 2): 爬虫(爬虫就是把网页下载下来,从里面提取一些信息,找到我要的所有信息,做数据分析.) 3): 自动化开发  日志分析 3 . 元字符 .   : 匹配除换行符以外的

常用模块之re模块以及正则表达式扩展

什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 使用python编写的代码(.py文件) 已被编译为共享库或DLL的C或C++扩展 包好一组模块的包 使用C编写并链接到python解释器的内置模块 为何要使用模块? 如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方

理解Javascript_04_数据模型 【转】

本文主要描述Javascript的数据模型,即对Javascript所支持的数据类型的一个全局概缆.文章比较的理论化,非常深入,因此不易理解,但务必对数据模型有一个映象,因为他是理解Javascript对象模型与Javascript执行模型的基础. 基本的数据类型  原始类型(简单数据类型.基本数据类型) Undefined类型: 表示声明了变量但未对其初始化时赋予该变量的值.undefined为Undefined类型下的唯一的一个值. Null类型:用于表示尚未存在的对象.Null类型下也只有

adf常用方法总结

1.使用clientAttribute传值.获取值 或组件上面放客户端属性 <af:selectBooleanCheckbox text="" label="" id="sbc1" autoSubmit="true" valueChangeListener="#{viewScope.BulkProcessB ean.onSelect}"> <af:clientAttribute name=

^(?:([^,]*),?){1} 的含义

^(?:([^,]*),?){1} 要拆分一下,看起来更加清楚. ^(?:([^,]*),?){1} ^表示匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合.要匹配 ^ 字符本身,请使用 \^. ^(?:([^,]*),?){1} {n}表示n 是一个非负整数.匹配确定的 n 次.例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o. ^(?:([^,]*),?){1} (?:)表示匹配 pat

Javascript数据模型

本文主要描述Javascript的数据模型,即对Javascript所支持的数据类型的一个全局概缆.文章比较的理论化,非常深入,因此不易理解,但务必对数据模型有一个映象,因为他是理解Javascript对象模型与Javascript执行模型的基础. 基本的数据类型  原始类型(简单数据类型.基本数据类型) Undefined类型: 表示声明了变量但未对其初始化时赋予该变量的值.undefined为Undefined类型下的唯一的一个值. Null类型:用于表示尚未存在的对象.Null类型下也只有

双刃剑MongoDB的学习和避坑

双刃剑MongoDB的学习和避坑 MongoDB 是一把双刃剑,它对数据结构的要求并不高.数据通过key-value的形式存储,而value的值可以是字符串,也可以是文档.所以我们在使用的过程中非常方便.正是这种方便给我们埋下了一颗颗地雷.当内嵌的文档太深,或者内嵌文档有相同的属性名.你会被炸得很惨.本章节通过 MongoDB简介,Shell编程,SpringBoot整合MongoDB,工作中注意事项,四个方面介绍MongoDB的使用.让你轻松入门,轻松避坑.还在等什么,赶快来学习吧! 技术:M

#19 re&amp;jieba模块

前言 在Python中,需要对字符串进行大量的操作,有时需要从一个字符串中提取到特定的信息,用切片肯定是不行的,所有这一节记录两个强大的文本处理模块,一个是正则表达式re模块,另一个是中文处理模块jieba,Here wo go! 一.re模块 re模块的出现使得Python完全支持正则表达式,在学re模块之前,先来认识一下正则表达式 正则表达式使用单个字符串来描述.匹配出特定句法的字符串,在文本编辑中,正则表达式常用来检索.替换那些特定匹配模式的文本.正则表达式使用起来十分繁琐,但是它带来的功

黑马程序员——java学习16(毕25)——正则表达式

正则表达式 符合一定规则的表达式 作用:专门用于操作字符串 特点:用于一些特定的符号来表示一些代码操作,这样就简化书写 好处:可以简化对字符串的复杂操作 具体操作功能: 1.匹配: public boolean matches(String regex) 参数 regex - 用来匹配此字符串的正则表达式 2.切割   String[] split(String  regex) 根据给定正则表达式的匹配拆分此字符串. 3.替换 String  replaceAll(String  regex ,

12.25 -特殊符号,通配符与正则表达式

12.25 特殊符号,通配符与正则表达式 内容: 1. 特殊符号系列 2. 通配符 3. 正则表达式分类 4. 正则与通配符区别 第1章 特殊符号 1.1 无分类系列 $   1.命令行 取出变量内容                     echo $LANG 2.awk中  取某一列                        awk '{print $1}' xukai.txt 3.普通用户的命令提示符                    [[email protected] ~]$