summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjrl64 <32905389+jrl64@users.noreply.github.com>2019-03-11 13:29:30 -0500
committerJussi Pakkanen <jpakkane@gmail.com>2019-03-11 20:29:30 +0200
commit969e291835fec26b49ae56a7b79fdeb72a903d85 (patch)
tree80853770610265de60530177f2bbb236387b0ee6
parentc6f84a223cffb95b272dbd15b74a6caf81c72fb0 (diff)
downloadmeson-969e291835fec26b49ae56a7b79fdeb72a903d85.tar.gz
A more verbose RE Definiton in search_version. Closes #5020
-rw-r--r--mesonbuild/environment.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
index b00b0f2d1..ac6e70a6d 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'