Regex, чтобы вернуть два числа? - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь написать регулярное выражение, которое соответствует этим параметрам:

print('twonum:',
    '3,4' in tn,
    '3.0, 4.5' in tn,
    '-3.14159265 1110' in tn,
    '3.4.5, 1' not in tn,
    '1   2' not in tn,
    '3 - 4' not in tn)

for match in regex.twonum.finditer(text):
    if match.group(0) == '3,4':
        print('  match1:', '3' in match.groups(), '4' in match.groups())
    if match.group(0) == '-3.14159265 1110':
        print('  match2:', '-3.14159265' in match.groups(), '1110' in match.groups())

Но я могу сделать так, чтобы оно совпадало только с '3, 4' в pythex. Это все еще возвращает Ложь для первых трех. Он возвращает True для последних трех, что и должно быть. match1 и match2 до сих пор загадка.

Это мое регулярное выражение:

pattern2 = '\'[\d](,)?[\d]\''
twonum = re.compile(pattern2)

Что мне нужно сделать, чтобы оно соответствовало заданным параметрам?

1 Ответ

0 голосов
/ 20 апреля 2020
'-?\d+(?:\.\d+)?(?:(?:, ?| )-?\d+(?:\.\d+)?)*'

Вы можете попробовать это. См. Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...