InDesign GREP 查找之间
InDesign GREP find between
在 InDesign 的 GREP 搜索中,我试图获取填充有 CSV 的文本字段的一部分(使用 #
作为分隔符的文件)。我想grep不同部分的原因是给每个不同的字符样式。
文本域内容如下所示:
Alpha#60x50cm#Acryl
Beta#2013#50x40cm#Öl
Gamma#2013#50x40cm#Holz
…
正在使用
^[^#]+
可以很好地获取每行的第一部分(由第一个主题标签分隔)
Grep 模式看起来如何获得:
- 主题标签 1 和 2 之间的所有内容,
- 主题标签 2 和 3 之间的所有内容,
- 主题标签 3 之后的所有内容?
每一行。
您需要在 grep 中使用 -P
参数。
$ grep -oP '(?<=#)[^#]*(?=#|$)' file
,2013
60x50cm
Acryl
2013
50x40cm
Öl
2013
50x40cm
Holz
将上述命令的输出更改为每行三列。
$ grep -oP '(?<=#)[^#]*(?=#|$)' file | paste - - -
,2013 60x50cm Acryl
2013 50x40cm Öl
2013 50x40cm Holz
在 InDesign UI 中,您可以
- 搜索
^[^#]+
以匹配第一个字段的内容;
- 搜索
(?<=#)[^#]+(?=#[^#]*#[^#]*$)
匹配第二个字段的内容;
- 搜索
(?<=#)[^#]+(?=#[^#]+$)
匹配第三个字段的内容;
- 最后搜索
(?<=#)[^#]+$
匹配第四个字段的内容
这依赖于所有具有 正好 四个字段(因此有 3 个 #
)的行,并且将仅匹配两个 #
标记之间的文本.下图显示了将这四种应用为 GREP 样式的结果:
如您所见,应用的属性无处重叠,因此所有内容仅标记一次。
另一种方法是使用Javascript。所有行都可以在 #
字符(命令称为 split
)上拆分,并且 returns 之间的文本数组。但是,这会将文本转换为纯 Javascript 字符串,并且需要一些技巧才能将结果 "back" 转换为本机格式的文本。
在 InDesign 的 GREP 搜索中,我试图获取填充有 CSV 的文本字段的一部分(使用 #
作为分隔符的文件)。我想grep不同部分的原因是给每个不同的字符样式。
文本域内容如下所示:
Alpha#60x50cm#Acryl
Beta#2013#50x40cm#Öl
Gamma#2013#50x40cm#Holz
…
正在使用
^[^#]+
可以很好地获取每行的第一部分(由第一个主题标签分隔)
Grep 模式看起来如何获得:
- 主题标签 1 和 2 之间的所有内容,
- 主题标签 2 和 3 之间的所有内容,
- 主题标签 3 之后的所有内容?
每一行。
您需要在 grep 中使用 -P
参数。
$ grep -oP '(?<=#)[^#]*(?=#|$)' file
,2013
60x50cm
Acryl
2013
50x40cm
Öl
2013
50x40cm
Holz
将上述命令的输出更改为每行三列。
$ grep -oP '(?<=#)[^#]*(?=#|$)' file | paste - - -
,2013 60x50cm Acryl
2013 50x40cm Öl
2013 50x40cm Holz
在 InDesign UI 中,您可以
- 搜索
^[^#]+
以匹配第一个字段的内容; - 搜索
(?<=#)[^#]+(?=#[^#]*#[^#]*$)
匹配第二个字段的内容; - 搜索
(?<=#)[^#]+(?=#[^#]+$)
匹配第三个字段的内容; - 最后搜索
(?<=#)[^#]+$
匹配第四个字段的内容
这依赖于所有具有 正好 四个字段(因此有 3 个 #
)的行,并且将仅匹配两个 #
标记之间的文本.下图显示了将这四种应用为 GREP 样式的结果:
如您所见,应用的属性无处重叠,因此所有内容仅标记一次。
另一种方法是使用Javascript。所有行都可以在 #
字符(命令称为 split
)上拆分,并且 returns 之间的文本数组。但是,这会将文本转换为纯 Javascript 字符串,并且需要一些技巧才能将结果 "back" 转换为本机格式的文本。