18正则表达式

Posted wyx666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了18正则表达式相关的知识,希望对你有一定的参考价值。

1、findall:返回所有满足匹配条件的结果,放到列表里

  

import re
ret=re.findall(www.(?:oldboy|baidu).com,www.oldboy.com)
print(ret)

技术分享图片

findall:优先级:findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可(?:取消优先级)

2、search:在整个字符串内匹配,返回第一个满足匹配条件的结果,用group显示,没匹配到调用group会报错

import re
ret=re.search(a,baabc).group()
print(ret)

技术分享图片

3、match :从头开始匹配,必须第一个字符就要满足匹配结果才能匹配的上,用group显示。没有结果返回None调用group会报错。

 

import re
ret=re.match(a,aabc).group()
print(ret)

技术分享图片

import re
ret=re.match(a,baabc).group()
print(ret)

技术分享图片

 

 

2、sub 类似字符串中的replace替换功能:(要替换的类型,替换后内容,替换的字符串,匹配的数量(替换))

import re
ret=re.sub(\\d,G,djfh24su5dfdffd,2)
print(ret)

技术分享图片

3、subn:也是替换,将要替换的内容替换了,返回元祖,元祖为:(替换的结果,替换了多少次)

import re
ret=re.subn(\\d,G,djfh24su5dfdffd)
print(ret)

技术分享图片

3、compile  :将正则表达式编译成一个正则表达式对象,正则表达式对象调用search,参数为待匹配的对象

import re
obj=re.compile(\\d{3})
ret=obj.search(jih345njkiud234)
print(ret.group())

技术分享图片

 

4、split:分割

  split的优先级:

在匹配部分加上()之后所切出的结果是不同的,
没有()的没有保留所匹配的项,但是有()的却能够保留了匹配的项,
这个在某些需要保留匹配部分的使用过程是非常重要的。(也就是说:对于要匹配的条件来说:加不加括号是有区别的,没有括号不保留匹配的项,加上括号保留匹配的项)

import re
ret=re.split((\\d+),eva34heh4hi5gg)
print(ret)

技术分享图片

import re
ret=re.split((\\d),eva34heh4hi5gg)
print(ret)

技术分享图片

  这就是差距啊,差距!给你一个保护罩你就牛逼了,这个样子,现实也是这样。



以上是关于18正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

身份证号码的正则表达式

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

Java-18位身份证号的正则表达式。帮忙拆一下代码。