From 7a74ca2c9acca9f6978c41799f9e058d7f8154d2 Mon Sep 17 00:00:00 2001 From: coolreader18 <33094578+coolreader18@users.noreply.github.com> Date: Thu, 8 Aug 2019 02:05:58 -0500 Subject: [PATCH] Modify regex with lookahead in it in argparse --- Lib/argparse.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Lib/argparse.py b/Lib/argparse.py index 0d8968267..b40d4a2dd 100644 --- a/Lib/argparse.py +++ b/Lib/argparse.py @@ -328,14 +328,19 @@ class HelpFormatter(object): # break usage into wrappable parts part_regexp = ( - r'\(.*?\)+(?=\s|$)|' - r'\[.*?\]+(?=\s|$)|' - r'\S+' + r'(\(.*?\)+|\[.*?\]+|\S+)(?:\s|$)' ) + # FIXME: use regex below once we're compatible with sre + # part_regexp = ( + # r'\(.*?\)+(?=\s|$)|' + # r'\[.*?\]+(?=\s|$)|' + # r'\S+' + # ) opt_usage = format(optionals, groups) pos_usage = format(positionals, groups) - opt_parts = _re.findall(part_regexp, opt_usage) - pos_parts = _re.findall(part_regexp, pos_usage) + opt_parts = list(map(lambda t: t[0], _re.findall(part_regexp, opt_usage))) + pos_parts = list(map(lambda t: t[0], _re.findall(part_regexp, pos_usage))) + print(opt_parts) assert ' '.join(opt_parts) == opt_usage assert ' '.join(pos_parts) == pos_usage