python中re模块的findall,python正则表达式findall

  python中re模块的findall,python正则表达式findall

  在python中可以直接调用re模块实现正则匹配,其中re.findall()函数可以遍历匹配,得到字符串中所有匹配的字符串,并返回一个列表。本文主要介绍re模块findall()函数的Python正则表达式的相关信息,供大家参考。

  

一、re.findall函数介绍

  其定义见回复:

  def findall(模式,字符串,标志=0):

  返回字符串中所有非重叠匹配的列表。

  如果模式中存在一个或多个捕获组,则返回

  组列表;这将是一个元组列表,如果模式

  有多个组。

  结果中包含空匹配。

  return _compile(模式,标志)。findall(字符串)

  返回字符串中所有匹配模式的字符串,返回形式为数组。

  find()函数的两种表示

  进口re

  kk=re.compile(r\d )

  kk . find all( one 1 two 2 three 344 )

  #[1,2,3,4]

  #注意这里findall()的用法,可以传递两个参数;

  kk=re.compile(r\d )

  re.findall(kk, one123 )

  #[1,2,3]

  

二、实例代码

  后面会解释代码的各个部分,先列出来~

  进口re

  str=aabbabaabbaa

  # A . 匹配除\n(换行符)以外的任何字符

  print(re.findall(ra.b ,str))#[aab , aab]

  # *前面的字符出现0次或多次

  print(re.findall(ra*b ,str))#[aab , b , ab , aab , b]

  #贪婪,匹配一切从。*从前到后。

  print(re.findall(ra。*b ,str))#[aabbabaabb]

  #非贪婪,遇到的时候截取开头和结尾,所以截取多个匹配的结果,即使中间没有字符。

  print(re.findall(ra。*?b ,str))#[aab , ab , aab]

  #不贪心,同上,只不过比上面多了一个括号,只保留括号的内容。

  print(re.findall(ra。*?)b ,str))#[a ,, a]

  str=aabbab

  aabbaa

  Bb #后面还有两个B。

  #没算最后一个断行的aab

  print(re.findall(ra。*?b ,str))#[aab , ab , aab]

  #回复。s不会中断\ n。

  print(re.findall(ra。*?b ,str,re。S))#[aab , ab , aab , aa\n b]

  

三、re.findall中正则表达式(.*?)

  是一个字符串

  str=aabbabaabbaa

  1.符号。匹配除了\n(换行符)以外的任何字符。

  print(re . find all(r a b ,str))

  #[aab , aab]

  2.符号*前的字符出现了0次或更多次。

  print(re.findall(ra*b ,str))

  #[aab , b , ab , aab , b]

  3.符号。*贪婪,匹配一切从。*从前到后。

  print(re.findall(ra。*b ,str))

  #[aabbabaabb]

  4.符号。*?非贪,首尾拦截。因此,多个匹配的结果将被截取,中间没有字符。

  print(re.findall(ra。*?b ,海峡))

  #[aab , ab , aab]

  5.符号(。*?)不贪心。和上面一样,只是比上面多了一个括号,只保留括号的内容。

  print(re.findall(ra。*?)b ,str))

  #[a ,, a]

  关于括号和括号的区别。

  进口re

  string= abcdefg acbdgef abcdgfe cadbgfe

  #不带括号

  regex=re.compile(((\ w)\ s \ w))

  print(regex.findall(string))

  # output: [(abcdefg acbdgef , abcdefg ),( abcgfe cadbgfe , abcdgfe )]

  regex 1=re.compile((\ w)\ s \ w )

  print(regex1.findall(string))

  # output: [abcdefg , abcdgfe]

  regex2=re.compile(\w \s \w )

  print(regex2.findall(string))

  # output: [abcdefg acbdgef , abcdgfe cadbgfe]

  第一个正则表达式有两个括号,其输出列表包含两个元组。第二个正则表达式有一个括号,它的输出内容是括号匹配的内容,而不是整个表达式的结果。第三个正则表达式中没有括号,它的输出是整个表达式匹配的内容。其实不是python特有的,是规律性特有的。任何使用正则性的高级语言都可以满足这个特性:有括号的时候只能匹配括号里的内容,没有括号【相当于最外层加一个括号】。在正则中,‘()’表示分组,括号表示分组。您只能匹配“()”中的内容。

  

四、re.findall中参数re.S的意义

  1.该字符串变成(后跟另外两个B)

  str=aabbab

  aabbaa

   bb

  2.该参数没有re。s,最后一个换行符的aab不算。

  print(re.findall(ra。*?b ,海峡))

  #[aab , ab , aab]

  3.参数是re。s,它不会中断\ n。

  print(re.findall(ra。*?b ,str,re。s))

  #[aab , ab , aab , aa\n b]

  

参考

  正则表达式(。*?)和参数re。通过使用2.python re模块findall()来详细解释

  3.3的findall()的详细解释。Python正则环模块

  

总结

  关于re模块的findall()函数的Python正则表达式的详细讲解本文到此为止。关于re模块findall()的Python正则表达式的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: