python findall函数用法,python中re.findall用法

  python findall函数用法,python中re.findall用法

  转载至:https://www.cnblogs.com/one-lightyear/p/6814833.html,感谢作者:一光年太遥远

  今天写代码的时候,写正则的时候遇到了一个坑。这个坑就是re模块下的findall()函数。

  我把下面的代码结合起来录下来。

  import Resting= ABCDEFG ACBD GEF ABCD GFE CADBGFE #有括号和无括号的区别#无括号regex 1=re . pile((\ w)\ s \ w )print(regex 1 . find all(string))# output:[ abcdefg ,Abcdgfe]#解释:\ s代表空格,只返回括号中匹配的项。第一次匹配后,已经进行到第二个空格前面的位置,下一次匹配从这个位置开始;regex 2=re . pile( \ w \s \ w )print(regex 2 . find all(string))# Output:[ abcdefg acbdgef , abcgfe cadbgfe] #解释:\ s代表空格,返回整个正则表达式的匹配项;执行第一次匹配后,你已经到了第二个空格前面的位置,下一次匹配从这个位置开始;regex 3=re . pile((\ w)\ s \ w))print(regex . find all(string))# output:[( abcdefg acbdgef , abcdefg ),( abcgfe cadbgfe , abcgfe)执行完第一次匹配后,已经到了第二个空格前面的位置,下一次匹配从这个位置开始;#结论:#findall()返回括号匹配的结果(如regex 1);#如果不带括号返回,则返回整个语句匹配的结果(如regex2)#多括号返回多个括号匹配的结果(如regex 3);第一个正则表达式有一个括号,它的输出是括号匹配的内容,而不是整个表达式的结果。

  第二个正则表达式没有括号,它的输出是整个表达式匹配的内容。

  第三个正则表达式中有两个括号,我们可以看到它的输出是一个包含两个元组的列表。

  结论:findall()返回括号匹配的结果(如regex1),多括号会返回多个括号匹配的结果(如regex3),如果没有括号,会返回整个语句匹配的结果(如regex2)。所以你在提取数据的时候需要注意这个坑。

  其实不是python独有的,是规律性独有的。任何使用正则性的高级语言都可以满足这个特性:有括号的时候只能匹配括号里的内容,没有括号【相当于最外层加一个括号】。在正则中,“()”表示分组,一个括号表示分组。您只能匹配“()”中的内容

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

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