在 Affinity 中使用正则表达式

Affinity 支持使用正则表达式来查找匹配指定模式的文档内容。

正则表达式在 Affinity 中有多种使用场景:

编写正则表达式需要使用专用语法,以指定要在文本中查找的模式。下面提供的示例场景和表达式展示了您在编写自己的表达式时可能会用到的常用语法。

Affinity 帮助无法提供有关正则表达式全部功能的全面指南。您可以访问 www.regular-expressions.inforegexone.com 等在线资源,了解更多信息。

区分大小写

当表达式与字母匹配时,状态面板区分大小写,除非您在表达式中明确另行规定。当启用查找框的匹配大小写格式选项户,查找和替换面板区分大小写。

在各个面板上,可以覆盖表达式的部分或全部区分大小写设置:

正则表达式示例

图层名称包含两个单词之一,后跟特定单词

在 Affinity Photo 文档中,我们使用修整工具在照片上方的图层绘图,去除了照片上的蒙尘和瑕疵。

因此,每一个图层都命名为去除蒙尘 (Dust removal) 或去除瑕疵 (Blemish removal)。

在“状态”面板上,我们可以添加一个查询,检查图层名称是否与正则表达式 (?i)(Dust|Blemish) removal 匹配,该正则表达式指蒙尘瑕疵,后跟一个空格,然后是“removal”。整个表达式忽略字母大小写。

图层名称包含两个单词,单词的位置和顺序随意

在 Affinity Designer 文档中,我们使用了图层名称偏移填充 (offset fill) 来标识已手动重新定位以创建手工错印效果的图层。

我们可能在某些地方按相反的顺序输入了这些单词。

在“状态”面板上,我们可以添加一个查询,检查图层名称是否与正则表达式 (?i)(?=.*offset)(?=.*fill).*$ 匹配。这会匹配包含这两个单词的图层名称,而不管这两个单词在名称中的位置如何。整个表达式忽略字母大小写。

遵循特定命名惯例的图层名称

在用于 CAD 建筑设计的 Affinity Designer 文档中,图层名称使用双字母前缀来标识建筑物组件,后跟一组或多组下划线,再后跟一些数字。例如,SS-35_10_15

在“状态”面板上,我们可以使用诸如 [Ss][Ss](_[0-9]{1,})+ 等表达式来控制属于特定组件类别的图层的可见性。即使前缀的字母大小写输入有误,表达式仍可正常运行。

相反,我们可以通过在表达式开始处进行小幅更改来控制所有其他组件类别的图层的可见性,因此它变成 (^[Ss][Ss])(_[0-9]{1,})+

文档文本中的单词实例,但以特定单词开头的情况除外。

在 Affinity Publisher 文档中,我们需要在整个文本中查找某个单词实例,但忽略前面带有特定单词的实例。

在“查找和替换”面板上,在查找框的格式设置选项中选择正则表达式后,我们便可使用表达式 (?>!proin )aliquam。结果将包括 aliquam 的实例,但前面带有 proin 和空格的实例除外。

可以排除前面带有某个单词的实例。例如,要排除单词 error 前面带有冠词“the”或“an”的实例,可以使用表达式 (?>!(the|an) )error

另请参阅: