使用GREP

时间:2019-12-07 09:20:34

标签: regex adobe-indesign

我试图弄清楚如何使用GREP在InDesign中的数字上添加逗号(,)和美元符号($)。

例如,

  • 一种GREP配置,可将4位数字(例如2000转换为$2,000

  • 一种GREP配置,可将5位数字(例如20000转换为$20,000

2 个答案:

答案 0 :(得分:0)

  1. 首先,通过以下任一方式打开InDesign的Find/Change调色板:

    • 从菜单栏中选择Edit> Find/Change
    • 或者,在macOS上键入 + F ,或者在Windows上键入 CTRL + F
  2. 然后,在GREP面板中选择Find/Change面板。


TL; DR 使用下面结合解决方案A和B 部分中提供的解决方案。但是,如果您也想这样做,请考虑将100000之类的6位数字更改为下面的$100,000 部分。


解决方案A:

  

一种GREP配置,可将4位数字(例如2000转换为$2,000

  1. "Find What"区域中,输入以下模式:

    (?<![0-9])([0-9]{1})([0-9]{3})(?![0-9]+?)
    

    有关此正则表达式模式的详细说明,请参见here

  2. "Change To"区域中输入以下内容:

    $$1,$2
    

解决方案B:

  

一种GREP配置,可将5位数字(例如20000转换为$20,000

  1. "Find What"区域中,输入以下模式:

    (?<![0-9])([0-9]{2})([0-9]{3})(?![0-9]+?)
    

    有关此正则表达式模式的详细说明,请参见here

  2. "Change To"区域中输入以下内容:

    $$1,$2
    

结合解决方案A和B:

要满足您的要求,您可以利用以下单个regexp模式执行单个“查找/替换” 。这可以满足这两个要求,即将2000等数字更改为$2,000,还可以将20000等数字更改为$20,000

  1. "Find What"区域中,输入以下模式:

    (?<![0-9])([0-9]{1,2}?)([0-9]{3})(?![0-9]+?)
    

    有关此正则表达式模式的详细说明,请参见here

  2. "Change To"区域中输入以下内容:

    $$1,$2
    

还将100000之类的6位数字更改为$100,000

如果您还希望将100000之类的6位数字更改为$100,000,请执行以下操作:

  1. "Find What"区域中,输入以下模式:

    (?<![0-9])([0-9]{1,3}?)([0-9]{3})(?![0-9]+?)
    

    有关此正则表达式模式的详细说明,请参见here

  2. "Change To"区域中输入以下内容:

    $$1,$2
    

附加说明:

  1. 上述解决方案中的"Change To"文本(即$$1,$2)利用$1$2来引用与子表达式匹配的数字包含在正则表达式模式的括号(...)中。第一个美元符号($)和逗号(,)插入结果文本中

  2. 要在文档中执行更改,您需要先单击"Find"按钮,然后单击"Change All"按钮。


编辑:

OP的作者随后在评论中提出了以下要求:

  

最后一点,我要在表达式中添加什么以使其搜索9位数字?

执行上述中提供的解决方案后,也可以将100000之类的6位数字更改为$100,000 部分,请考虑运行第二个查找/更改使用以下配置:

  1. "Find What"区域中,输入以下模式:

    (?<![0-9])([0-9]{1,3}?)([0-9]{3})([0-9]{3})(?![0-9]+?)
    

    有关此正则表达式模式的详细说明,请参见here

  2. "Change To"区域中输入以下内容:

    $$1,$2,$3
    

因此,在执行了两个单独的“查找/更改”任务后,即

  1. 中提供的数字也将100000之类的6位数字更改为$100,000
  2. 接着是编辑部分中提供的这一新功能。

您将处理长度在4到9位之间的所有数字/数字。

逗号的位置如下表所示:

┏━━━━━━━━┯━━━━━━━━━━━┯━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━┓
┃ No. of │ Example   │ Example      │                                                        │           ┃
┃ digits │ Before    │ After        │ Find What Pattern                                      │ Change To ┃
┣━━━━━━━━┿━━━━━━━━━━━┿━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━┫
┃   4    │ 1234      │ $1,234       │                                                        │           ┃
┠────────┼───────────┼──────────────┤                                                        │           ┃
┃   5    │ 12345     │ $12,345      │ (?<![0-9])([0-9]{1,3}?)([0-9]{3})(?![0-9]+?)           │ $$1,$2    ┃
┠────────┼───────────┼──────────────┤                                                        │           ┃
┃   6    │ 123456    │ $123,456     │                                                        │           ┃
┣━━━━━━━━┿━━━━━━━━━━━┿━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━┫
┃   7    │ 1234567   │ $1,234,567   │                                                        │           ┃
┠────────┼───────────┼──────────────┤                                                        │           ┃
┃   8    │ 12345678  │ $12,345,678  │ (?<![0-9])([0-9]{1,3}?)([0-9]{3})([0-9]{3})(?![0-9]+?) │ $$1,$2,$3 ┃
┠────────┼───────────┼──────────────┤                                                        │           ┃
┃   9    │ 123456789 │ $123,456,789 │                                                        │           ┃
┗━━━━━━━━┷━━━━━━━━━━━┷━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━┛

答案 1 :(得分:0)

在InDesign中,您可以将其用于4、5或6个数字。

查找:(\d+)(?=(\d\d\d)+\b) 更改:$$1,