python正则表达式括号
❶ python入门问题,关于正则表达式。求高手通俗解答。
pattern=r'([1-9]{1,3}(.[0-9]{1,3}){3})'
[1-9]{1,3}表示匹配由1-9之间任意数组成的1位、2位或3位数,如1,12,123
.[0-9]{1,3}表示匹配1个点接由0-9之间任意数组成的1位、2位或御散3位数,如.1,.12,.123
(.[0-9]{1,3}){3}表示.[0-9]{1,3}的匹配条件重复3次,如.1.2.3,.1.12.123,168.1.1
([1-9]{1,3}(.[0-9]{1,3}){3})表示匹配1-9之间任意数组成的1位、2位或3位数+1个点接由0-9之间任意数组成的1位、2位陵拆乱或3位数 * 3次,所以可以尺档匹配127.0.0.1,192.168.1.66
()仅仅表示括号内的匹配项作为一组匹配,不会影响匹配的条件,
❷ python中的正则表达式中的 "|"
Python中re.findall()函数是要求正则表达式在捕获第0组数据时,要在正则表达式上加小括号才能捕获.
也就是说如果你要获取整个正则表达式匹配的数据(你这里是电子邮箱地址),需要在正则表达式外面加小括号,
然后取第0捕获组的数据(你这里是[x[0] for x in zhengze]),
因为findall函数把每一个匹配的多个捕获组(就是你正则表达式中的小括号中)的数据放到一个元组里,所以要用for循环把第0捕获组的数据取出来.
具体程序改进如下
>>>zhengze=re.findall("([A-Za-z0-9]+@(163|qq|gmail).com)",txt)
>>>[x[0]forxinzhengze]
结果就是你要的邮箱列表了.
❸ Python中正则表达式的匹配规则总结
其他关于Python的总结文章请访问: https://www.jianshu.com/nb/47435944
正则表达式用来匹配字符串,在python中可以使用 re 模块来完成,本篇做一个对正则表达式的匹配规则的总结
在上述的精确匹配后可以跟上一些符号来进行模糊的匹配:
可以使用中括号的形式进行范围匹配,中括号表达式后边可以跟上上述模糊匹配的符号来表示数量
多个条件可以 紧跟着写在同一个中括号中 ,比如:
[a-zA-Z] :匹配一个大、小写字母
❹ python正则表达式 去掉括号及其里面的内容
python正则表达式 (.*?版) 替换为空 注意小括号是中文小括号
完整的Python程序如下
#!/usr/bin/envpython
#encoding:utf-8
importre
str='多摩君1(英文版) 多摩君2(四川话版) 多摩君3(东北版) 多摩君4(上部)'
out=re.sub('(.*?版)','',str)
printout
输出
多摩君1
多摩君2
多摩君3
多摩君4(上部)
❺ 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中的正则表达式
因为正则表达式中有两组小括号,即两个分组
findall会以元组形式返回所有分组中的内容,即[('127.0.0.1', '.1')]
其中'127.0.01'表示匹配最外层大括号的内容
'.1'表示匹配'.[0-9]{1,3}'的内容(最后一次重复时为.1)
由于('.[0-9]{1,3}')为需要重复三次的分组,该括号不能省略
而使用findall就一定会显示括号分组的内容
若想只显示127.0.0.1而不显示'.1',可考虑使用match方法
返回从字符串起始位置开始,第一次匹配正则表达式的内容
match返回的结果为re.Match对象,可通过group()显示匹配的字符串,即127.0.0.1
通过groups()显示匹配的所有分组,即('127.0.0.1', '.1')
如图所示:
❼ [python]正则表达式 匹配内层花括号
>>> import re
>>> s="{1 2 3 { 4 5 { 6 7 } } } "
>>> reg=re.compile(r"\{[^{}]*\}")
>>> reg.search(s).group(0)
'{ 6 7 }'
>>>
❽ 请问这个python正则表达式是什么意思matches = re.findall('([^\s\\\]+)', line)
这个是用来匹毁信册铅配不带空格和反斜杠的字符串。
这里的^匹配非中括号里的字符;\s代纤姿轮表空格;\\\代表字符反斜杠(正则表达式需要双反斜杠来转义,因为\在正则表达式中本身就具有含义)
line = 'haha \\\\ \\ hehe'
matches = re.findall('([^\s\\\]+)', line)
print matches # ['haha', 'hehe']
望采纳!
❾ 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正则表达式,匹配所有大括号内容
用不着正则表达式吧,直接读取不就可以了。