Grep:如何只找到一行文本中提到的第一个价格

Grep: How to only find the first price mentioned in a line of text

我在 Adob​​e Indesign 中有一堆可变文本,我希望每行文本中第一个提到的价格有另一种颜色。我对正则表达式完全陌生并且被卡住了。 我使用以下 grep 查找价格,但它找到了文本中提到的所有价格。

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

正文如下,我只需要获取粗体价格:

消费 €99,99,立减 €25

消费 €150,立减 €35

我尝试了很多在 stack overflow 和网上提到的东西,但就是找不到正确的解决方案。添加 ?最后让它变得懒惰并不能解决问题。我想我需要对 grep 代码进行一些分组,但找不到正确的方法。任何帮助都会很棒!

  1. 创建两个字符样式"Bold"和"Roman",后者应与您的段落样式中的字符样式相同。

  2. 创建两个 GREP 样式。第一个应将字符样式 "Bold" 应用于具有以下模式的文本:

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

    第二个应将字符样式 "Roman" 应用于具有以下模式的文本:

    ^.*?(?=€)
    

您可以使用代码\K从头开始重置匹配。这有效:

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

因为它首先匹配直到第一次出现 的所有内容,然后忘记刚刚匹配的内容,之后只匹配欧元符号和下一个金额。