diff options
author | jrl64 <32905389+jrl64@users.noreply.github.com> | 2019-03-11 13:29:30 -0500 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2019-03-11 20:29:30 +0200 |
commit | 969e291835fec26b49ae56a7b79fdeb72a903d85 (patch) | |
tree | 80853770610265de60530177f2bbb236387b0ee6 | |
parent | c6f84a223cffb95b272dbd15b74a6caf81c72fb0 (diff) | |
download | meson-969e291835fec26b49ae56a7b79fdeb72a903d85.zip meson-969e291835fec26b49ae56a7b79fdeb72a903d85.tar.gz meson-969e291835fec26b49ae56a7b79fdeb72a903d85.tar.bz2 |
A more verbose RE Definiton in search_version. Closes #5020
-rw-r--r-- | mesonbuild/environment.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index b00b0f2..ac6e70a 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -324,8 +324,26 @@ def search_version(text): # This regex is reaching magic levels. If it ever needs # to be updated, do not complexify but convert to something # saner instead. - version_regex = r'(?<!(\d|\.))(\d{1,2}(\.\d+)+(-[a-zA-Z0-9]+)?)' - match = re.search(version_regex, text) + # We'll demystify it a bit with a verbose definition. + version_regex = re.compile(r""" + (?<! # Zero-width negative lookbehind assertion + ( + \d # One digit + | \. # Or one period + ) # One occurrence + ) + # Following pattern must not follow a digit or period + ( + \d{1,2} # One or two digits + ( + \.\d+ # Period and one or more digits + )+ # One or more occurrences + ( + -[a-zA-Z0-9]+ # Hyphen and one or more alphanumeric + )? # Zero or one occurrence + ) # One occurrence + """, re.VERBOSE) + match = version_regex.search(text) if match: return match.group(0) return 'unknown version' |