一个正则表达式的例子

前端之家收集整理的这篇文章主要介绍了一个正则表达式的例子前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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,可以匹配abbc\abbbc\abbbbc,但是无法匹配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")=[]

猜你在找的正则表达式相关文章