加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

一个正则表达式的例子

发布时间:2020-12-14 04:36:25 所属栏目:百科 来源:网络整理
导读:html="i have a litte tiny small jidsahoi nduashuip cat djsidjsuam kmidu9829jh caaaaaaaaatamsidosmio ct" re.findall("ca*t",html)=? 这个的输出结果很明显,['cat','caaaaaaaaat',‘ct’]。*在正则表达式是0~20亿,所以看头尾,而中间的a是可以无穷多

html="i have a litte tiny small jidsahoi nduashuip cat djsidjsuam kmidu9829jh caaaaaaaaatamsidosmio ct"

re.findall("ca*t",html)=?

这个的输出结果很明显,['cat','caaaaaaaaat',‘ct’]。*在正则表达式是0~20亿,所以看头尾,而中间的a是可以无穷多和0的。

re.findall("ca+t",html)=['cat','caaaaaaaaat'],+在正则表达式里1~20亿。这一点注意区分。


那这个re.findall(r"a[bcd]*b","abcbd")=?

那这个re.findall(r"a[bcd]*b","abcbd ab acdb abdb")=?

那这个re.findall(r"a[bcd]*b","abcbd ab acdb acb accccccb")=?

那这个re.findall(r"a(bcd)+b","abcdb ab acdb acb accccccb")=?


从上面几个例子可以看得出,这是一种“贪婪匹配”,[]以内的东西不是一个整体,仅仅是一个集合,里面的元素只要有就可以满足,而没有顺序之分。


搭配这个例子,比较好消化:html="iponuhsk986789aeiou8n2n89aeiou8nfh72".

re.findall(r"[aeiou]",html),这个命令是搜索语句里符合a or e or i or o or u的词,而不是寻找整个的aeiou。其结果是=['i','o','u','a','e','i','u']

而re.findall(r"(aeiou)",html)=['aeiou','aeiou']


同理一下的答案也应该能看明白了:

re.findall(r"(12)","12")=['12']

re.findall(r"(12)*","12")=?

re.findall(r"(12)*","12koko12kondu121212mlok")=?

====================================分割线======================================

代表“制定前一个字符匹配零次或者一次”,比如“一杯水?”,他可以匹配“一杯水”和“一杯”,而无法匹配“一杯水水”。


{m,n},这种代表重复m~n次,比如ab{2,4}c,可以匹配abbcabbbcabbbbc,但是无法匹配ac,abc,abbbbbc。这样可见*={0,},+={1,},?={0,1}


具体例子如下:

re.findall(r"[a-z]","nuid8jiodmnasuieojmakm")

['n','d','j','m','n','s','k','m']

>>> re.findall(r"[a,z]","nuid8jiodmnasuieojmakm")=['a','a']

>>> re.findall(r"a{2,3}","ab")=[]

>>> re.findall(r"a{2,3}","aaaab")=['aaa']

>>> re.findall(r"a{2,"aab")=['aa']

>>> re.findall(r"a{2-3}","aaaab")=[]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读