一个正则表达式的例子
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")=[] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |