Надежное регулярное выражение для сопоставления всех символов до числа с плавающей запятой - PullRequest
0 голосов
/ 25 сентября 2019

Мне нужно надежное регулярное выражение, которое будет соответствовать всем символам до плавающего числа.

У меня есть набор строк со строками, похожий на следующий пример:

    'some string 1 some more 2.1 even more 9.2 caracala,domitian2.3'
...

Мне нуженнадежное регулярное выражение для подстроки каждой строки только в числах с плавающей точкой, поэтому конечный результат будет выглядеть следующим образом:

{
  'some string 1 some more': '2.1'
  'even more': '9.2'
  'caracala,domitian': '2.3'
}

Я буду использовать цикл for с python re, чтобы получить конечный результат, но Мне нужнонадежное регулярное выражение, которое будет соответствовать всем символам до плавающего числа.

Я пробовал: [-+]?\d*\.\d+|\d+, но он также выбирает числа

1 Ответ

2 голосов
/ 25 сентября 2019

Использование re.findall может дать вам желаемый результат:

inp = "some string 1 some more 2.1 even more 9.2 caracala,domitian2.3"
matches = re.findall(r'(.*?)\s*(\d+\.\d+)\s*', inp)
print(matches)

[('some string 1 some more', '2.1'), ('even more', '9.2'), ('caracala,domitian', '2.3')]

Объяснение регулярного выражения:

(.*?)       match all content up the first
\s*         optional space, which is followed by
(\d+\.\d+)  a floating point number

Обратите внимание, что мы собираем ведущий контент и плаваем в отдельных группах захвата., которые затем появляются отдельно в результирующем списке.

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