本文由 千趣源码 – qianqu 发布,转载请注明出处,如有问题请联系我们!python正则表达式语法大全-正则表达式语法大全
陈艳刚在一家名车汇找到一份新工作中。他的工作任务是给在评价网页页面上留有联系电话的顾客通电话。殊不知,困惑陈艳的是,评价是以随意文字的方式展现的,而联系电话就在这种评价中。
不一个个拷贝,怎能轻轻松松寻找这种联系电话?python中的正则表达式(re)能够化解这个问题!
靠谱关系式
正则表达式是具备特殊符号的编码序列。它有利于查验字符串数组中的每一个标识符,看它是不是配对一个方式:什么标识符发生在哪个部位,发生了几回。
使我们看一下丹已经阅读文章的评价:
“我给总服务台打过100次电話,都没人回应我。我需5201;尽早与你谈一谈!!我的号码是111–1234567!”
使我们看一下陈艳的市场需求是:
大家一起来看看陈艳的要求:
我很清晰我还在找哪一个号。'
import retext = 'I have called The service desk 100 times and nobody replies to me. I need a conversation ASAP!! My number is 111-1234567!'result = re.findall('111-1234567', text)上边的编码回到“111–1234567”。假如它在文字中反复,它将回到2次联系电话。
以上编码回到“111–1234567”。假如在文字中反复,它将回到联系电话2次。
有时不清楚实际号,必须从评价中发现顾客号。'
result = re.findall(r’d’, text)这将回到全部数据,但每一个原素只回到一个数据:
['1', '0', '0', '1', '1', '1', '1', '2', '3', '4', '5', '6', '7']R-python初始字符串数组。
这儿,r意味着python初始字符串数组。特定“r”代表着我们不期待Python将“”视作转义字符,而只将其视作一般标识符。
这里有2个较为的事例:
print(r’HellonWorld!’)print(“=========”)print(‘HellonWorld!’)编码回到:
HellonWorld!=========HelloWorld!D-全部数据,但只有一个数据。
假如文字包括数据,考虑到配对“d”方式。
假如文字包括数据,请考虑到配对“d”方式。
我觉得在每一个评价中获得详细的数据,而不是一个数据。'
result = re.findall(r’d ’, text)编码回到:
['100', '111', '1234567']“d”后边的“ ”表明一个或好几个数据。因此它不容易一位数一位数地扫描仪数据,反而是把全部取走。
“d”后边的“ ”表明一个或好几个数据。因此它不容易一个接一个地扫描仪数据,但会把全部数据带去。
我只想要联系电话,不用提取别的号。'
好的,没什么问题。使我们看一下如何知道111–1234567是一个联系电话。因为它的电话区号是3十位数,因此射频连接器是“-”,随后是7十位数。因而,我们可以实行下列程序流程:
result = re.findall(r’d{3}-d{7}’, text){3} — 3十位数,{7} —十位数
上边的编码代表着我们要找的字符串数组由3个数据构成,后边跟一个“-”,随后是7个数据。
是的!这恰好是你需要找的!
没有错。这恰好是你需要找的!
那麼,假如用户沒有留住她们的电话区号呢?'
我给总服务台打过100次电話,无人接听。我需要尽早与你谈一谈!!我的号码是111–1234567!我的另一个号是7654321!
text = 'I have called the service desk 100 times and nobody replies to me. I need a conversation ASAP!! My number is 111-1234567! My other number is 7654321!'result = re.findall(r’d{3}-d{7}|d{7}’, text)编码回到:
['111–1234567','7654321']‘|’—与别的python编码相近,它的意思是OR。因此之上编码表述将挑选“3十位数-7十位数”或“7十位数”二种形式的数据。
| '-与别的python编码相近,它的意思是OR。因而,以上编码关系式将挑选“3 -7位”或“7位”方式下的数据。
太棒了!正则表达式还能完成别的作用吗?'
部位
自然一开始大家提及的RE还可以检验部位。因而,假如顾客在语句开始写出联系电话,您能够如此做:
text = '111-1234567! That is my number! The other one is 7654321!'result = re.findall(r’^d{3}-d{7}|^d{7}’, text)" "表明仅有当联系电话表明在语句开始时,联系电话才会配对。因而,仅有“111–1234567”配对并回到。
反复
text = 'abcabc aa cc dd e 123123 abcabab'result = re.findall(r'(w{3})(1)', text)w和d一样,意味着数据,而w意味着一切标识符:数据,标识符等。
在re.findall英语的语法中,(w{3})表明3字符,而(1)表明与(w{3})同样的值在传1442;中反复发生(在其中“1”表明第一个括弧中表明的值)。
因而,以上编码回到:(“ABC”,“ABC”),(‘123’,‘123’)。
如果我们将编码更改成:
result = re.findall(r’(w{3})(w{2})(2)’, text)(w{3})(w{2})(2)表明由3字符,2字符和反复(w{2})表明的值,(2)中的“2”表明第二个括弧中表明的值)。
因而,上边的编码回到:[('ABC ',' ab ',' ab')]。
结果
表述RE有很多种多样方法。第一次见到它的情况下,我彻底手足无措,可是如果你了解它的类别和涵义的情况下,你能发觉它很容易。
哦,我都想提一下这一指令:
re.search()与上一篇文章中采用的re.findall()不一样,re.search()将只回到与匹配算法的第一个字符串数组。
最终汇总一些常见的表达形式。



期待文中能协助你迅速把握正则表达式!期待本文能协助你迅速把握正则表达式!







