python正则表达式详解
Ⅰ 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模块,可供参考,基本上覆盖了所有内容。