python正则表达式findall和search,python find 正则_1

  python正则表达式findall和search,python find 正则

  写正则表达式总是有很多问题,尤其是表达式有多个元组的时候。我们来看看re模块下的findall()函数遇到多个表达式元组会出现什么样的坑。

  代码如下所示

  进口

  str=abcd

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

  print(regex0.findall(str))

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

  print(regex1.findall(str))

  regex2=re.compile(w s w )

  打印(regex2.findall(str))以输出结果

  [(ab , a ),( cd , c)]

  [a , c]

  [ab , cd]可能结果有点出乎意料。这里有一个解释。

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

  第二个正则表达式有一个括号,它的输出是括号匹配的内容,而不是整个表达式的结果。

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

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

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

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

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