Как я могу grep десятичного числа из многих чисел в строке - PullRequest
0 голосов
/ 04 января 2019

У меня есть строка1 этого шаблона. apple:car-cat-3.1.1.1: going to 2.2 home. Я хочу записать десятичное число. В этой строке это будет 2.2.

Я пытался использовать re.search(r'\d+\.\d+',string1), когда я делаю это, я получаю 3.1 вместо 2.2. Я ищу его для цикла строк, где некоторые строки имеют только одно десятичное число, а другие имеют более 1 числа с этим шаблоном.

re.search(r'\d+\.\d+',string1)

когда я делаю это, я получаю 3.1 вместо 2.2

1 Ответ

0 голосов
/ 04 января 2019

Вы используете re.search , который возвращает первое совпадение, но у вашего регулярного выражения есть 3 совпадения : 3.1, 1.1 и 2.2

Если вы хотите сопоставить свое значение, вы можете использовать отрицательные обходные пути, чтобы проверить, что слева и справа не является символом без пробелов:

(?<!\S)\d+\.\d+(?!\S)

Regex demo | Python demo

Например:

import re

string1 = "apple:car-cat-3.1.1.1: going to  2.2 home"
print(re.search(r'(?<!\S)\d+\.\d+(?!\S)',string1).group())
# 2.2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...