Переопределение регулярного выражения

Я хочу, чтобы регулярное выражение соответствовало любому набору цифр, с одной возможной точкой. Если после него есть еще одна точка и больше цифр, выполните совпадение с предыдущими цифрами, точкой и следующими цифрами.
пример string = 'aa323aa232.02.03.23.99aa87..0.111111.mm'
желаемые результаты = [323, 232.02, 02.03, 03.23, 23.99, 87, 0.111111]

в настоящее время используется:

 import re i = 'aa323aa232.02.03.23.99aa87..0.111111.mm' matches = re.findall(r'(?=(\d+\.{0,1}\d+))', i) print matches 

вывод:

 ['323', '23', '232.02', '32.02', '2.02', '02.03', '2.03', '03.23', '3.23', '23.99', '3.99', '99', '87', '0.111111', '111111', '11111', '1111', '111', '11'] 

One Solution collect form web for “Переопределение регулярного выражения”

Это использует утверждение lookahead для захвата, а затем другое выражение для gobbling characters, следующего за вашими правилами:

 >>> import re >>> i = 'aa323aa232.02.03.23.99aa87..0.111111.mm' >>> re.findall(r'(?=(\d+(?:\.\d+)?))\d+(?:\.\d+(?!\.?\d))?', i) 

Вывод

 ['323', '232.02', '02.03', '03.23', '23.99', '87', '0.111111'] 
  • Как получить первое слово в строке
  • регулярное выражение для тройной цитаты
  • Python: определение объединения регулярных выражений
  • Простой шаблон поиска Python
  • Использование regEx для удаления цифр из строки
  • Несколько групп Python RegEx
  • Как сделать отрицательный взгляд Python менее жадным?
  • Python: получение текста соответствия Regex
  • Регулярное выражение, соответствующее всем, кроме строки
  • Как найти все заполнители для str.format в строке python с помощью регулярного выражения?
  • Получение шаблона обратно из скомпилированного re?
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.