Python re 模块,RegexObject() 实例源码

我们从Python开源项目中,提取了以下9个代码示例,用于说明如何使用re.RegexObject()

项目:Ellis    作者:Frzk    | 项目源码 | 文件源码
def from_string(cls, raw_filter, rule_limit):
        """
        Creates a new Filter instance from the given string.

        *raw_filter* is the raw filter : a string that may contain several
        regular expressions (separated by a newline char) and tags.

        *rule_limit* is the Rule's limit above which the Action is executed.

        Raises :class:`exceptions.ValueError` if the given string could not be
        compiled in at least one suitable :class:`re.RegexObject`.

        Returns a new :class:`Filter` instance.
        """
        parsed_filter = cls.replace_tags(raw_filter)
        regexes = cls.build_regex_list(parsed_filter, rule_limit)

        return cls(regexes)
项目:respeaker_virtualenv    作者:respeaker    | 项目源码 | 文件源码
def _compile_template_re(delimiters):
    """
    Return a regular expresssion object (re.RegexObject) instance.

    """
    # The possible tag type characters following the opening tag,
    # excluding "=" and "{".
    tag_types = "!>&/#^"

    # TODO: are we following this in the spec?
    #
    #   The tag's content MUST be a non-whitespace character sequence
    #   NOT containing the current closing delimiter.
    #
    tag = r"""
        (?P<whitespace>[\ \t]*)
        %(otag)s \s*
        (?:
          (?P<change>=) \s* (?P<delims>.+?)   \s* = |
          (?P<raw>{)    \s* (?P<raw_name>.+?) \s* } |
          (?P<tag>[%(tag_types)s]?)  \s* (?P<tag_key>[\s\S]+?)
        )
        \s* %(ctag)s
    """ % {'tag_types': tag_types, 'otag': re.escape(delimiters[0]), 'ctag': re.escape(delimiters[1])}

    return re.compile(tag, re.VERBOSE)
项目:taf    作者:taf3    | 项目源码 | 文件源码
def regex(self):
        """
        A compiled version of the expression

        :rtype: re.RegexObject
        :return: compiled regex object
        """
        if self._regex is None:
            self._regex = re.compile(self.expression)
        return self._regex
项目:Deploy_XXNET_Server    作者:jzp820927    | 项目源码 | 文件源码
def __init__(self, root_path, url_map, url_pattern):
    """Initializer for StaticContentHandler.

    Args:
      root_path: A string containing the full path of the directory containing
          the application's app.yaml file.
      url_map: An appinfo.URLMap instance containing the configuration for this
          handler.
      url_pattern: A re.RegexObject that matches URLs that should be handled by
          this handler. It may also optionally bind groups.
    """
    super(StaticContentHandler, self).__init__(url_map, url_pattern)
    self._root_path = root_path
项目:Ellis    作者:Frzk    | 项目源码 | 文件源码
def __init__(self, regexes):
        """
        Initializes a newly created Filter with the given list of
        :class:`re.RegexObject`.

        *regexes* is a list of :class:`re.RegexObject`s.

        Raises :class:`exceptions.ValueError` if the given list evaluates to
        False (empty list, None, ...)
        """
        if regexes:
            list.__init__(self, regexes)
        else:
            raise ValueError("Unable to initialize a Filter without at least "
                             "one valid pattern, please fix your config file")
项目:gnat-gdb-scripts    作者:AdaCore    | 项目源码 | 文件源码
def __init__(self, pattern=None, name=None, suffix=None,
                     recursive=False, match_pretty_name=True):
            """
            :param Matcher.BasePattern|None pattern: If provided, reject any
                type that does not match `pattern`.

            :param str|re.RegexObject|None name: If it's a string, reject any
                type whose name is different. If it's a regular expression
                object, reject any type whose name isn't matched by it. The
                regular expression must match the whole name.

            :param str|None suffix: If provided, reject any type whose name
                does not end with `suffix`.

            :param bool recursive: If true, consider integer basis types (for
                integer subrange types) or the target type of typedefs for
                matching in addition to the original type.

                This behavior can be surprising: for instance typedef layers
                are used to distinguish unconstrained arrays from accesses to
                these, so this is disabled by default.

            :param bool match_pretty_name: If True, match on the pretty GDB
                type name (`str(gdb_type)`, for instance: "foo.bar"),
                otherwise, use the raw name (`gdb_type.name`, for instance:
                "foo__bar___Xb").
            """
            self.type_pattern = pattern
            self.name = name
            self.suffix = suffix
            self.recursive = recursive
            self.match_pretty_name = match_pretty_name
项目:gnatdashboard    作者:AdaCore    | 项目源码 | 文件源码
def __parse_line(self, regex):
        """Parse a GNATcheck message line.

        Adds the message to the current database session.

        Retrieves following information:

            * source basename
            * line in source
            * rule identification
            * message description

        :param re.RegexObject regex: the result of the _MESSAGE regex
        """

        # The following Regex results are explained using this example.
        # 'input.adb:3:19: use clause for package [USE_PACKAGE_Clauses]'

        # Extract each component from the message:
        #       ('input.adb', '3', '19', 'use clause for package',
        #        'USE_PACKAGE_Clauses')
        base = regex.group('file')
        src = GNAThub.Project.source_file(base)
        line = regex.group('line')
        column = regex.group('column')
        message = regex.group('message')
        rule_id = regex.group('rule_id').lower()

        self.__add_message(src, line, column, rule_id, message)
项目:gnatdashboard    作者:AdaCore    | 项目源码 | 文件源码
def __parse_line(self, regex):
        """Parse a GNATprove message line.

        Adds the message to the current database session.

        Retrieves following information:

            * source basename
            * line in source
            * rule identification
            * message description

        :param re.RegexObject regex: the result of the _MESSAGE regex
        """

        filename = regex.group('file')
        src = GNAThub.Project.source_file(filename)
        line = regex.group('line')
        column = regex.group('column')
        message = regex.group('message')
        msg_id = regex.group('msg_id')
        category = regex.group('category').lower()

        record = self.msg_ids.get((filename, int(msg_id)))

        if record is None:
            self.log.warn(
                '%s: failed to get record for msg_id #%s', filename, msg_id)
            return

        rule_id = record['rule'].lower()
        self.__add_message(src, line, column, rule_id, message, category)
项目:Ellis    作者:Frzk    | 项目源码 | 文件源码
def build_regex_list(cls, filter_str, rule_limit):
        """
        Creates a list of :class:`re.RegexObject`s from the given string.

        *filter_str* is a string containing the regular expressions used to
        build the Filter.

        If *filter_str* contains newlines chars, it is split in different
        regular expressions (one per line).

        If one of these strings can not be compiled into a
        :class:`re.RegexObject`, a warning is issued and the pattern is
        ignored.

        *rule_limit* is the Rule's limit above which the Action is executed.

        If *rule_limit* is > 1 and *filter_str* doesn't have at least one named
        capturing group, a warning is issued and the pattern is ignored.

        Returns a list of :class:`re.RegexObject`s built upon the given string.
        """
        regexes = []

        for f in filter_str.splitlines():
            try:
                regex = re.compile(f, re.MULTILINE)
            except sre_constants.error:
                warnings.warn("Unable to compile this pattern: \"{0}\". "
                              "It will be ignored"
                              .format(f))
            else:
                # If the Rule limit is > 1, the pattern MUST have a capturing
                # group.
                # (this capturing group will be used later as an index to
                # count the matches.)
                # If the pattern doesn't respect this, it will be ignored.
                if rule_limit > 1 and not regex.groupindex:
                    warnings.warn("The pattern \"{0}\" doesn't have a "
                                  "capturing group but needs one."
                                  "It will be ignored"
                                  .format(f))
                else:
                    regexes.append(regex)

        return regexes