in8inity
@in8inity

Какие есть онлайн тестировщики регулярки, разбивающие на группы?

Онлайн тестировщик (regex101) и результат работы программы выдают разные группы в ответе с одной и той же регуляркой.
Суть задачи: разбивка строки рецепта на ингредиент / количество / меру / и "хвостик"
sPattern = re.compile('''([a-z \-\,\']*)    # для строк типа salt and pepper to taste
    ((?:\d+\ +)(?:and [0-9\/]+)?|         # для записей c дробью (1 and 3/4 ...)
    [\d\.\,\-]+)\s?                       # диапазон, допустимо с точкой (1,5-2...; 4-8...)
    ([\w\ \%\-\'\"]+)                     # мера, при наличии; ингредиент в простых продуктах
    \(?([0-9\.\,\ ]+g?)?\)?               # (эквивалент в граммах, при наличии, в скобках)
    (.*)                                  # ингредиент или пустая строка для простых продуктов
    (?:( or .+)|\((.+)\)|\, (.+))?        # довесок после запятой/скобок/или
    ''', re.IGNORECASE | re.VERBOSE)

Результат тестировщика, 5 групп:
1. [0-0] ``
2. [0-9] `1 and 1/3`
3. [10-15] `cups `
4. [16-20] `225g`
5. [21-53] ` frozen* blueberries, not thawed`

Результат программы, 3 группы (не считая пустых строк):
'1 and', '1', '/3 cups (225g) frozen* blueberries, not thawed'

Почему так получается?
Посоветуйте, плиз, корректный тестировщик, разбивающий на группы.
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
in8inity
@in8inity Автор вопроса
www.pcre.ru/eval и baco.su/articles/regulyarnye-vyrajeniya
Дополнительно, пришлось заменить пробелы на символьный класс пробелов (\s), наверное, для моего python это было принципиально
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы