Grep: Как найти только первую цену, указанную в строке текста - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть куча переменного текста в Adobe Indesign, и я хотел бы, чтобы первая упомянутая цена в каждой строке текста имела другой цвет. Я совершенно новичок в регулярных выражениях и застрял. Я использовал следующий grep, чтобы найти цену, но он нашел все цены, указанные в тексте.

€ [0-9] + ([.,] [0-9] +) *

Текст похож на ниже, и мне нужно получить только жирные цены:

Потрать € 99,99 , получи скидку 25 евро

Потрать 150 , скидка 35 евро

Я перепробовал много вещей упоминается о переполнении стека и в сети, но просто не может найти правильное решение. Добавление? в конце, чтобы сделать это ленивым, не делает трюк. Я думаю, что мне нужно сделать группировку по grep-коду, но я не могу найти правильный способ сделать это. Любая помощь будет отличной!

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Вы можете использовать код от \K до сброс совпадения с самого начала. Это работает:

^[^€]*\K€\d+([.,]\d+)*

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

GREP style in InDesign CC 2020

1 голос
/ 17 февраля 2020
  1. создайте два стиля символов «Полужирный» и «Римский», последний должен иметь тот же стиль символов, что и в вашем стиле абзаца.

  2. Создать два GREP стили. Первый должен применять стиль символов «Bold» к тексту со следующим шаблоном:

    ^.*?(€\d+(?:,\d+)*)
    

    Второй должен применять стиль символов «Roman» к тексту со следующим шаблоном:

    ^.*?(?=€)
    

enter image description here

...