Python正则表达式

知识点一:re模块

1、findall方法:

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表

a="python123123145java"

print(re.findall("1",a))

2、match方法

re.match 尝试从字符串的起始位置匹配一个模式,匹配成功 返回的是一个匹配对象(这个对象包含了我们匹配的信息),如果不是起始位置匹配成功的话,match()返回的是空,

注意:match只能匹配到一个

a="python123123java"

print(re.match('python',a))

print(re.match('python',a).group())# 查看匹配的字符

print(re.match('123',a))

print(re.match('python',a).span())# 匹配字符的下标取值区间

3、search方法

re.search 扫描整个字符串,匹配成功 返回的是一个匹配对象(这个对象包含了我们匹配的信息)

注意:search也只能匹配到一个,找到符合规则的就返回,不会一直往后找

print(re.search('123',a))# yes

print(re.search('cc',a))# None

print(re.search('python',a).group())

print(re.search('python',a).span())

re.match与re.search的区别:re.match只匹配字符串的开始位置找,如果字符串开始不符合正则表达式,则匹配失败,re.search:匹配整个字符串,如果一直找不到则,返回是空的,没有结果

4、元字符

单字符匹配

字符描述

.匹配任意1个字符(除了\n)

[]匹配 [] 中列举的字符

\d匹配数字,即0-9

\D匹配非数字,即不是数字

\s匹配空白,即 空格,tab键

\S匹配非空白

\w匹配单词符,即a-z、A-Z、0-9、_

\W匹配非单词字符

代表数量的元字符

字符描述

*匹配前一个字符出现0次或者无限次,即可有可无

+匹配前一个字符出现1次或者无限次,即至少有1次

?匹配前一个字符出现0次或者1次,即要么有1次,要么没有

{m}匹配前一个字符出现m次

{m,}匹配前一个字符至少出现m次

{m,n}匹配前一个字符出现从m到n次

代表边界的元字符

字符描述

^匹配字符串开头

$匹配字符串结尾

\b匹配一个单词的边界

\B匹配非单词边界

分组匹配

字符描述

|匹配左右任意一个表达式

(ab)将括号中的字符作为一个分组

b='张三天在玩4399小游戏,张三 hello 玩的.很开心'

ress=re.findall(r'张三.',b)# .任意一个字符

ress1=re.findall(r'[54]',b)

ress1=re.findall(r'\d',b)# 匹配数字,单个字符,单个元素

ress1=re.findall(r'\D',b)#

ress1=re.findall(r'4*',b)# 匹配前一个字符出现0次或者无限次,即可有可无

ress1=re.findall(r'4+',b)# 匹配前一个字符出现1次或者无限次,即可有可无

ress1=re.findall(r'三{2}',b)# 匹配前一个字符出现m次

ress1=re.findall(r'三{1,}',b)# 匹配前一个字符出现从m到n次

ress1=re.findall(r'三{1,2}',b)# 匹配前一个字符出现从m到n次

ress1=re.findall(r'^张三',b)# 匹配字符串开头

ress1=re.findall(r'心$',b)# 匹配字符串结尾

ress1=re.findall(r'\bhello\b',b)# 匹配一个单词的边界

ress1=re.findall(r'he\Bll',b)# 匹配一个非单词的边界

print(ress1)

5、贪婪和非贪婪

正则默认都是用贪婪模式去匹配数据的,就是尽可能多的匹配符合要求的数据,

在非贪婪模式下,始终找最短匹配

a='<img src = "xiaomeimei.jpg" alt="这是图片">'

b='<html>000</html><td>ddd</td>'

print(re.findall(r'<.*>',b))# 贪婪

print(re.findall(r'<.*?>',b))# 加上?变成非贪婪

print(re.findall(r'-(\d+)(.+-)','-123456789-'))

print(re.findall(r'-(\d+?)(.+-)','-123456789-'))

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、正则表达式正则表达式(regular expression)是由一些特定字符以及组合所组成的字符串表达式,用来...
    IIronMan阅读 5,885评论 0 24
  • 正则表达式一般用于检索,替换文本。 一.正则表达式元字符和语法: 这些语法是每种语言都通用的。接下来记一下pyth...
    omuraisu阅读 3,828评论 0 2
  • 1. 简介 正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可...
    花间派I风月阅读 3,838评论 0 12
  • # 正则表达式 \d匹配一个数字 \w匹配一个字母或数字 \s匹配一个空格(包括tab等空白符) \s+匹配至少一...
    小呀小芒果阅读 2,934评论 0 0
  • 正则表达式 \d匹配一个数字 \w匹配一个字母或数字 \s匹配一个空格(包括tab等空白符) \s+匹配至少一个空...
    小呀小芒果阅读 3,860评论 0 0

友情链接更多精彩内容