当前位置:首页 » 编程语言 » python正则表达式详解

python正则表达式详解

发布时间: 2023-06-09 14:55:07

python 正则表达式

这个问题的确比较纠结首先明确一点
m.groups()==m.group(1)+m.group(2)+...+m.group(n)
要确定m.group(n)中的n到底是多少???
1.在你的匹配式中出现了几次匹配成功的括号,n就是几
给你举个例子m = re.match("([abc])+([abc])+", "abc"):
它出现了2次括号,且这两次括号都能匹配,所以n=2。你可以print m.group(2)不会报错,而 m = re.match("([abc])+", "abc"),print m.group(2)则会报错
2.其次python的匹配引擎是从后面开始的
在给你举个对比的例子:
例子1:m = re.match("([abc])+([abc])+([abc])+", "abc"):
如果你理解第一点,n=3,然后你可以print 一下 你会发现:
m.group(3)=‘c’ ,m.group(2)='b',m.group(1)='a'

例子2:m = re.match("([abc])+([abc])+", "abc"):
m.group(1)=b,m.group(2)='c'
( python中说明了n在0-99间都是可以的,如果超出的话IndexErrorexception跳出)

如果你能看明白那么应该groups的相应东西你理解的差不多了,接下来看你第二问
?表示匹配前面的表达式0个或一次,例子:go?匹配go为0或者1次
:呵呵 就是冒号的意思,所以你懂的,没匹配到

写那么多,如果不明白,可以再问我哈 万请采纳

Ⅱ python的正则表达式

1,正则表达式的一些内容

        正则表达式主要是用来匹配文本中需要查找的内容,例如在一片文章中找出电话号码,就中国的来说11位纯数字(不说座机),则使用"d{11}" 意味匹配数字11次,就能准确的查找出文本中的电话号码. 还有就是在编写网络爬虫的时候需要提取很多超链接再次进行爬取,使用正则表达式就很方便.直接匹配http开头就行,当然也可以使用beautifulsoup的select方法.

看下面的程序看看正则表达提取文本中的邮箱:


w 匹配字母,数字,下划线 

+ 匹配1次或者多次
re是正则表达式的工具包,工具包出错的话在anaconda的命令行输入"pip install re"安装,其他的工具包也是如此.

re.compile()中的r示意不是转义字符,也就是保持后面字符串原样,findall返回一个列表.下面还有一个版本的程序略有不同.


compile的另一个参数re.IGONORECASE(忽略大小写),还可以是re.DORALL,多行模式,具体功能也是模糊不清,不过在使用通配符 . 匹配的时候加上re.DOTALL参数能够匹配换行.如果希望忽略大小写和多行模式都开启可以使用re.compile(r'....',re.IGNORECASE|re.DOTALL) .

表达式使用( ),对匹配到的内容分为3组 也就是(w+)出现字母,数字,下划线一次或多次,这个分组就是下面使用match对象的grou()方法的时候的参数.不给参数和参数0都是得到整个匹配到的内容,  参数1得到第一个括号匹配到的内容,以此类推参数2和3,如果没有括号分组的话使用参数会出现错误.
search( )查找和正则式匹配的内容,只匹一次后面的那个找不到.返回一个match对象


w 匹配字母,数字,下划线

W 匹配字母,数字.下划线之外的所有字符

d 匹配数字

D 匹配非数字

s 匹配空格,制表符,换行符

S匹配除空格制表符,换行符之外的其他字符

[ .... ]定义自己的匹配,如[aeiouAEIOU ]匹配所有的元音字母,注意不是匹配单词.

{最少次数,最多次数},例如{3,9} 匹配3-9次,{ ,10}匹配0-10次. 默认为匹配最多次数(贪心匹配),非贪心模式在后面加上问号 


?  可选 0次或者1次吧  

+匹配1次或多次

*匹配0次或者多次

^ 判断开头 ^d 如果待匹配串是数字开头则返回第一个数字

$判断结尾  d$  如果待匹配串是数字结尾则返回最后一个数字

.   通配符,匹配除换行之外的所有字符

   d{11}  匹配数字11次

    . * 匹配所有字符除 换行

[a-zA-Z0-9._%+-]  小写和大写字母、数字、句点、下划线、百分号、加号或短横

[a-zA-Z]{2,4} 匹配字母 2 - 4次

Ⅲ Python中正则表达式的匹配规则总结

其他关于Python的总结文章请访问: https://www.jianshu.com/nb/47435944

正则表达式用来匹配字符串,在python中可以使用 re 模块来完成,本篇做一个对正则表达式的匹配规则的总结

在上述的精确匹配后可以跟上一些符号来进行模糊的匹配:

可以使用中括号的形式进行范围匹配,中括号表达式后边可以跟上上述模糊匹配的符号来表示数量

多个条件可以 紧跟着写在同一个中括号中 ,比如:
[a-zA-Z] :匹配一个大、小写字母

Ⅳ python 正则是什么意思

Python正则就是 Python正则表达式

可以这样理解:

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

就是你想在字符串中寻找你想要的子字符串.例如

你想匹配 "锄禾日当午,汗滴禾下土" 里的 "日当午" 日当午就是你的正则表达式形式.

python的re 模块使 Python 语言拥有全部的正则表达式功能。

简单的代码:

importre
print(re.match('www','www.runoob.com').span())

这个代码就是你匹配网址中有没有正则表达式"www"!

Ⅳ python 正则表达式,怎样匹配以某个字符串开头,以某个字符串结尾的情况

python正则匹配以xx开头以xx结尾的单词的步骤:

1、假设需要匹配的字符串为:site sea sue sweet see case sse ssee loses需要匹配的为以s开头以e结尾的单词。正确的正则式为:sS*?e

2、使用python中re.findall函数表示匹配字符串中所有的可能选项,re是python里的正则表达式模块。findall是其中一个方法,用来按照提供的正则表达式,去匹配文本中的所有符合条件的字符串。

3、代码和结果如下:

text ='site sea sue sweet see case sse ssee loses'

re.findall(r'sS*?e',text)

结果为:['site', 'sue', 'see', 'sse', 'ssee']

(5)python正则表达式详解扩展阅读:

python正则匹配,以某某开头某某结尾的最长子串匹配

代码如下:

regVersions = re.search(r'(V|v)[0-9].*[0-9]', filename)

if regVersions:

print regVersions.group()


Ⅵ python|正则表达式

\1指的就是捕获组1的内容,具体内容你可以搜索下(也叫后向引用),/i是忽略大小写,g是搜索所有内容,\b是指单词的开头或结尾
整个连起来/\b([a-z]+) \1\b/ig就表示在字符串中搜索重复的单词(以字母开头),忽略大小小,所以匹配会得到3组内容,即Is is、of of和up up

Ⅶ Python 正则表达式(完整版)

注意点:
以上量词都是贪婪模式,会尽可能多的匹配,如果要改为非贪婪模式,通过在量词后面跟随一个 ? 来实现

断言不会匹配任何文本,只是对断言所在的文本施加某些约束

前瞻 : exp1(?=exp2) exp1 后面的内容要匹配exp2
负前瞻 : exp1(?!exp2) exp1 后面的内容不能匹配exp2
后顾: (?<=exp2)exp1 exp1 前面的内容要匹配exp2
负后顾 : (?<!exp2)exp1 exp1 前面的内容不能匹配exp2
例如:我们要查找hello,但是hello后面必须是world,正则表达式可以这样写: "(hello)s+(?=world)" ,用来匹配 "hello wangxing" 和 "hello world" 只能匹配到后者的hello

(?(id)yes_exp|no_exp) :对应id的子表达式如果匹配到内容,则这里匹配yes_exp,否则匹配no_exp

Ⅷ python 正则表达式怎么匹配

Python本不等于正则语言,它只是内部集伏晌指成了一个正则引擎,这谨销个引擎实现了正则语言的功能,在Python中,这个引擎就是re模缺配块。所以,你要先‘import re’。

下面网页详细介绍了正则本身和re模块,可供参考,基本上覆盖了所有内容。

热点内容
怎么改密码锁 发布:2025-02-13 23:47:39 浏览:852
androidbitmap获取大小 发布:2025-02-13 23:47:38 浏览:559
怎么把升级鸿蒙系统变回安卓 发布:2025-02-13 23:36:07 浏览:595
偶校验c语言 发布:2025-02-13 23:22:52 浏览:937
芒果如何提取离线缓存视频 发布:2025-02-13 23:16:12 浏览:793
王者荣耀微信区安卓哪里分低 发布:2025-02-13 23:14:10 浏览:658
安装linuxvmwaretools 发布:2025-02-13 22:56:02 浏览:8
浪潮服务器如何引导系统安装光盘 发布:2025-02-13 22:56:02 浏览:112
java多线程的同步 发布:2025-02-13 22:46:15 浏览:920
软件使用权限里存储关闭还是打开 发布:2025-02-13 22:46:11 浏览:382