2017-07-02 00:01:47 +01:00
|
|
|
:mod:`ure` -- simple regular expressions
|
|
|
|
========================================
|
2014-12-03 22:06:44 +00:00
|
|
|
|
|
|
|
.. module:: ure
|
|
|
|
:synopsis: regular expressions
|
|
|
|
|
2017-07-02 13:37:31 +01:00
|
|
|
|see_cpython_module| :mod:`python:re`.
|
|
|
|
|
2014-12-03 22:06:44 +00:00
|
|
|
This module implements regular expression operations. Regular expression
|
|
|
|
syntax supported is a subset of CPython ``re`` module (and actually is
|
|
|
|
a subset of POSIX extended regular expressions).
|
|
|
|
|
|
|
|
Supported operators are:
|
|
|
|
|
|
|
|
``'.'``
|
|
|
|
Match any character.
|
|
|
|
|
2017-11-07 22:24:39 +00:00
|
|
|
``'[...]'``
|
|
|
|
Match set of characters. Individual characters and ranges are supported,
|
|
|
|
including negated sets (e.g. ``[^a-c]``).
|
2014-12-03 22:06:44 +00:00
|
|
|
|
|
|
|
``'^'``
|
|
|
|
|
|
|
|
``'$'``
|
|
|
|
|
|
|
|
``'?'``
|
|
|
|
|
|
|
|
``'*'``
|
|
|
|
|
|
|
|
``'+'``
|
|
|
|
|
|
|
|
``'??'``
|
|
|
|
|
|
|
|
``'*?'``
|
|
|
|
|
|
|
|
``'+?'``
|
|
|
|
|
2017-10-31 12:45:26 +00:00
|
|
|
``'|'``
|
|
|
|
|
2017-11-07 22:24:39 +00:00
|
|
|
``'(...)'``
|
2017-07-02 00:01:47 +01:00
|
|
|
Grouping. Each group is capturing (a substring it captures can be accessed
|
|
|
|
with `match.group()` method).
|
|
|
|
|
2017-11-07 22:24:39 +00:00
|
|
|
**NOT SUPPORTED**: Counted repetitions (``{m,n}``), more advanced assertions
|
|
|
|
(``\b``, ``\B``), named groups (``(?P<name>...)``), non-capturing groups
|
|
|
|
(``(?:...)``), etc.
|
2014-12-03 22:06:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
Functions
|
|
|
|
---------
|
|
|
|
|
2017-11-03 22:26:31 +00:00
|
|
|
.. function:: compile(regex_str, [flags])
|
2014-12-03 22:06:44 +00:00
|
|
|
|
2017-07-02 00:01:47 +01:00
|
|
|
Compile regular expression, return `regex <regex>` object.
|
2014-12-03 22:06:44 +00:00
|
|
|
|
2017-07-02 00:01:47 +01:00
|
|
|
.. function:: match(regex_str, string)
|
2014-12-03 22:06:44 +00:00
|
|
|
|
2017-07-02 00:01:47 +01:00
|
|
|
Compile *regex_str* and match against *string*. Match always happens
|
|
|
|
from starting position in a string.
|
2014-12-03 22:06:44 +00:00
|
|
|
|
2017-07-02 00:01:47 +01:00
|
|
|
.. function:: search(regex_str, string)
|
2014-12-03 22:06:44 +00:00
|
|
|
|
2017-07-02 00:01:47 +01:00
|
|
|
Compile *regex_str* and search it in a *string*. Unlike `match`, this will search
|
2014-12-03 22:06:44 +00:00
|
|
|
string for first position which matches regex (which still may be
|
|
|
|
0 if regex is anchored).
|
|
|
|
|
|
|
|
.. data:: DEBUG
|
|
|
|
|
|
|
|
Flag value, display debug information about compiled expression.
|
2017-11-03 22:26:31 +00:00
|
|
|
(Availability depends on `MicroPython port`.)
|
2014-12-03 22:06:44 +00:00
|
|
|
|
|
|
|
|
2017-07-02 00:01:47 +01:00
|
|
|
.. _regex:
|
|
|
|
|
2014-12-03 22:06:44 +00:00
|
|
|
Regex objects
|
|
|
|
-------------
|
|
|
|
|
|
|
|
Compiled regular expression. Instances of this class are created using
|
2017-07-02 00:01:47 +01:00
|
|
|
`ure.compile()`.
|
2014-12-03 22:06:44 +00:00
|
|
|
|
|
|
|
.. method:: regex.match(string)
|
2017-07-02 00:01:47 +01:00
|
|
|
regex.search(string)
|
2014-12-03 22:06:44 +00:00
|
|
|
|
2017-07-02 00:01:47 +01:00
|
|
|
Similar to the module-level functions :meth:`match` and :meth:`search`.
|
|
|
|
Using methods is (much) more efficient if the same regex is applied to
|
|
|
|
multiple strings.
|
2014-12-03 22:06:44 +00:00
|
|
|
|
|
|
|
.. method:: regex.split(string, max_split=-1)
|
|
|
|
|
2017-07-02 00:01:47 +01:00
|
|
|
Split a *string* using regex. If *max_split* is given, it specifies
|
|
|
|
maximum number of splits to perform. Returns list of strings (there
|
|
|
|
may be up to *max_split+1* elements if it's specified).
|
2014-12-03 22:06:44 +00:00
|
|
|
|
|
|
|
Match objects
|
|
|
|
-------------
|
|
|
|
|
2017-07-02 00:01:47 +01:00
|
|
|
Match objects as returned by `match()` and `search()` methods.
|
2014-12-03 22:06:44 +00:00
|
|
|
|
|
|
|
.. method:: match.group([index])
|
|
|
|
|
2017-07-02 00:01:47 +01:00
|
|
|
Return matching (sub)string. *index* is 0 for entire match,
|
|
|
|
1 and above for each capturing group. Only numeric groups are supported.
|