在InDesign的GREP搜索中,我试图获取一个文本字段的部分,其中填充了CSV(使用#
作为分隔符的文件)。我想要弄清楚不同部分的原因是为每个部分赋予不同的角色风格。
Textfield内容如下所示:
Alpha#60x50cm#Acryl
Beta#2013#50x40cm#Öl
Gamma#2013#50x40cm#Holz
…
使用
^[^#]+
可以很好地获取每一行的第一部分(由第一个#标签分隔)
Grep模式将如何获得:
在每一行。
答案 0 :(得分:2)
在InDesign界面中,您可以
^[^#]+
以匹配第一个字段的内容; (?<=#)[^#]+(?=#[^#]*#[^#]*$)
以匹配第二个字段的内容; (?<=#)[^#]+(?=#[^#]+$)
以匹配第三个字段的内容; (?<=#)[^#]+$
以匹配第四个字段的内容。这依赖于完全四个字段(因而是3 #
)的所有行,并且仅匹配两个#
标记之间的文本。这是一个显示结果的图像,这四个应用为GREP样式:
如您所见,应用的属性无处重叠,因此所有内容仅标记一次。
另一种方法是使用Javascript。所有行都可以在#
字符上拆分(命令名为split
),并返回两者之间的文本数组。但是,这会将文本转换为普通的Javascript字符串,并且将结果“返回”转换为本机格式化文本需要一些技巧。
答案 1 :(得分:1)
您需要在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