【问题标题】:Python RegExp global flagPython RegExp 全局标志
【发布时间】:2012-07-26 01:20:39
【问题描述】:

python 中是否有一个标志或一些特殊键可以多次使用模式。 我曾经测试过http://gskinner.com/RegExr/ 我的正则表达式,它在其中正常工作。 但是在正确的环境匹配中测试时只返回 None。

import re
pattern = r"(?P<date>--\d\d-\w+:\d\d)[ \t]+(?P<user>\w+)[ \t]+(?P<method>[\w ]+)[\" ]*    (?P<file>[\w\\:\.]+)@@(?P<version>[\w\\]+)[\" ]*(?P<labels>[\(\w, \.\)]+){0,1}[\s \"]*(?P<comment>[\w \.-]+){0,1}[\"]"
base = """
--02-21T11:22  user3   create version "W:\foo\bar\fooz.bat@@\main\1" (label1, label2,   label3, label22, label33, ...)

"merge in new bat-based fooz installer"

--02-21T11:22  user1   create version "W:\foo\bar\fooz.bat@@\main\0"

--02-21T11:22  user2   create branch "W:\foo\bar\fooz.bat@@\main\"

"merge in new bat-based fooz installer"

--02-13T11:22  user1   create version     "W:\foo\bar\fooz.bat@@\main\1"

  "Made to use new fooz.bat"

"""
r = re.match(pattern, base)
print(r)

【问题讨论】:

    标签: python regex global flags


    【解决方案1】:

    每个 Python 正则表达式匹配函数都有不同的用途。

    re.match 总是从字符串的开头开始。

    re.search 从一开始就遍历字符串,寻找第一个匹配项。找到匹配项时它会停止。

    re.findall 返回所有搜索匹配的列表。

    在上述所有情况下,如果正则表达式模式中有一个组,那么您返回的项目是完整匹配的元组,然后是每个组匹配,按照它们在正则表达式模式中出现的顺序。

    【讨论】:

      【解决方案2】:

      re.match 尝试匹配字符串开头的模式。 您正在寻找re.search、re.findall 或re.finditer

      【讨论】:

        猜你喜欢
        • 2011-08-15
        • 2021-08-26
        • 2013-01-15
        • 1970-01-01
        • 2011-11-29
        • 1970-01-01
        • 2011-01-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多