re.MULTILINE的值如何影响re.compile()和re.search()函数的输出?

时间:2017-08-06 13:47:04

标签: python python-3.x

让我们举个例子吧! 当我写下面的代码时,我得到一个成功的匹配(请注意,搜索功能的字符串有8个字符,包括一个空格,搜索的re.MULTILINE值大于字符串的大小在这种情况下搜索到的是8:

>>> import re
>>> pattern=re.compile('^<html>',re.MULTILINE)
>>> print(pattern.search(' \n<html>'))
<_sre.SRE_Match object; span=(2, 8), match='<html>'>
>>> print(re.MULTILINE)
8

但是,当我将re.MULTILINE的值设置为小于字符串大小的任何值时,搜索失败,如下所示:

>>> re.MULTILINE=7
>>> pattern=re.compile('^<html>',re.MULTILINE)
>>> print(pattern.search(' \n<html>'))
None

re.MULTILINE如何在这里工作?

1 个答案:

答案 0 :(得分:-1)

您永远不会更改HUB的值。这是模块re.MULTILINE的内部实现。它需要用作标志(启用/禁用),否则不能。

基本上它意味着:

  

<强> re.MULTILINE :   指定时,模式字符&#39; ^&#39;在字符串的开头和每行的开头匹配(紧跟在每个换行符之后);和模式字符&#39; $&#39;匹配在字符串的末尾和每行的结尾(紧接在每个换行符之前)。默认情况下,&#39; ^&#39;仅匹配字符串的开头,并且&#39; $&#39;仅在字符串的末尾,紧接在字符串末尾的换行符(如果有)之前。

因此它使你的正则表达式模式(^,$)也适用于新行。否则,使用^时,模式仅匹配第一行。

示例:

re