适用于所有内容的 InDesign grep 规则然后在到达某个字符时停止?

平面设计 土坯设计 字型
2022-02-17 09:22:22

InDesign GREP 规则可能有点令人费解。假设您想要一个带有 GREP 样式规则的段落样式,该规则将字符样式应用于除某个字符之后的文本之外的所有内容。不适用于某个字符之后的字符,但适用于其他所有字符的东西?

例如,想象一长串文章标题。有些是短标题,有些是两个部分,一个短标题,然后是冒号,然后是详细说明。您希望强调整个短标题,并在长标题中强调包括冒号在内的所有内容:

  • 安哥拉加法器
  • Brilliant Badgers:英国最强壮的野兽
  • 加拿大沿海鲤鱼的旅行热潮
  • 危险:丹麦卑鄙的鸭子

我已经尝试了一堆规则,但似乎没有一个适用于此。我认为可能使用“消极的后视”之类的(?<!:.*).东西,但似乎没有任何效果:看起来“后视”和“前瞻”只能应用于你正在寻找的角色之前的角色为了。

任何 GREP 专家有任何想法吗?


这是我经过大量浏览和反复试验后发现的一件事,我认为在逻辑上应该可行,但由于我无法弄清楚的原因,它不起作用:

\<[^:]*|\<[^:]*:

从理论上讲,这应该意味着“从段落开始到第一次运行不是':'的字符结束,或者,如果从段落开始到一个字符运行不是':' ':',抓住包括 ':' 在内的那个。

在实践中,它只适用于一切。想不通为什么。

4个回答

我没有 InDesign 来检查这一点,但假设它的行为与此处的测试仪相同,我相信这应该可行:

^.*?(:|$)

这只是匹配从字符串开头到第一个冒号或字符串结尾的所有内容。

简短而简单:

^[^:]+:?

这意味着“从一开始就不是冒号的所有内容,可选地后跟冒号”。

"Everything from the start" -- ^-- 需要指定,否则 GREP 样式将从段落的开头应用到第一个冒号,然后从该冒号应用到下一个冒号;然后一次又一次,直到段落结束。归结为“实际上是整个段落,从头到尾”。
每个 GREP 表达式在每个段落内尽可能多次应用(非常合乎逻辑;如果不是,默认表达式\d+将仅匹配每个段落中的第一组数字)。

".. that is not acol .." --[^:]+匹配除冒号之外的所有字符。如果没有冒号,它将匹配整个段落。

“.. 可选地后跟一个冒号” - 当前:?一部分在它之前结束时,最后是匹配冒号本身。这是对冒号应用与前面文本相同的格式。

您不需要 GREP 来执行此操作,您可以使用嵌套样式。

在段落样式下转到首字下沉和嵌套样式。在这个窗口下有一个按钮来创建一个新的嵌套样式。添加一个后转到下拉菜单并选择要加粗的字符样式,然后在显示“单词”的地方将其替换为“:”。

这会将一行中的所有文本加粗到:,如果它没有“,那么整个段落应该是粗体的。

这是我管理过的最接近的:

\<[^:]*|[^:]*:

它的意思是:

  • \<[^:]*- 从段落的开头 ( \<) 开始,抓取不是冒号 ( ) 的内容[^:]然后抓取任意数量的 ( *) ...
  • |或者...
  • [^:]*:抓取任意数量的不是冒号 ( [^:]*) 后跟一个冒号 ( :)的东西(这会扩展带有冒号的行上的选择以包括冒号本身)

它工作正常,除非有两个冒号,在这种情况下,它适用于直到最后一个冒号的所有内容,而不是直到第一个冒号的所有内容:

  • 只是烦人:为什么我永远不会:-D 关于表情

它不会按预期停在第一个字符处。但是,如果不会再次出现“停止”字符,则可以使用它。


奇怪的是,\<[^:]*它自己,或者\<[^:]*|:,似乎只是抓住了一切。想不通为什么。