adobe InDesign 2020 正则样式(GREP)排版
在排版中的拙见,正则是个难点
版本:adobe InDesign 2020
在工作中遇到的排版问题
排文本是比较容易的,在做目录的时候还是纠结了很长时间,想办法解决问题才是最关键的
在弄到正则(GREP)问题最多
主要讲两部分
一.排版设置字符样式和段落样式
二.提取目录,调整样式用到正则表达式
谢言碎语不多讲,开始了

确定
尺寸、单位、方向、装订、页面、边距、分栏
最好在做的时候就想好要做成什么样的,这样减少后期对最基础的数据调整

2.边距涉及到页码、页眉,预留好位置,也可以先做一个简单的页眉页码,占位

3.每次做的时候最前面会空几页,留给扉页目录
第一篇文章就开始调整主页、段落、字符样式


4.页眉页码是固定的,放在主页里面就可以,位置嘛,自己喜欢就行
页码设置:文字》插入特殊符号》标识符》当前页码
快捷键:Ctrl+Shifl+Ait+N 在哪个主页就显示哪个字母 比如在A主页里面设置页码 页码的位置就直接显示A
页码的样式:版面》页码和章节选项 (需要在页面里面调整)
5.调整好页面内容的字符段落,确定了样式点击+就有了一个编辑好的字符和段落样式,
编辑一下样式名称方便自己选择,如果需要调整现有的字符段落样式尽量不要在文章内容里面直接调整字符和段落, 选择字符样式和段落样式里面保存的样式,去调整,所有应用了同一样式的就会一起变化。
6. 重要:样式尽量区分细致,后面再调整就会很方便,提取目录的时候也好编辑

7.总结:前面编辑页面内容还是比较容易的,就不做过多的阐述,把段落样式和字符样式设置好,排出自己喜欢的样式就OK了
二.提取目录、调整样式、正则表达式
版面》目录
选择需要在目录中显示的内容
这个时候段落样式就很重要了
比如说标题、副标题、作者、章节都可以直接添加到目录中
这里需要给目录中的内容设置样式,文章里面的段落样式字符样式一般都用不到,需要单独设置。
可以都用一种样式,也可以多设置几种样式,都看自己的喜好和需求方的意见
页码的显示在条目样式设置

这里就要给目录添加文章中对应的页码和制表符
制表符在段落样式里面设置
1-前导符 . 就会在目录和页码中间显示
2-的位置确定前导符的长度和后面页码的位置
这里需要多次尝试调整,去达到自己想要的结果

问题来了
第一章 神奇虫药,效力宏大
第二章 五毒抗癌篇
第三章 清热解毒抗癌篇
并不在一行,因为在做的时候有回车是两行内容,在目录中就会显示两行
想给页码前面添加符号可以在段落样式里面实现,比如说……/8就可以实现
但是想给页码添加括号样式比如……/(8),段落样式没有办法添加后面的括号)
这个就需要正则去调整


解决把两行内容合并一行,添加符号
有两种办法解决
一个一个手动调整
每次更新目录都需要手动调整
用查找/更改里面的GREP(正则查找)
做一次设置,每次更新目录,做一次正则就可以了
编辑》更改/查找 Ctrl+F

常用正则表达式
(下面提到的正则表达式如果表述有问题,请指正,会及时调整。不想误导其他人)
^ 段首
? 零次或一次
\X 所有字符
. 任意可打印字符
+ 重复一次或者多次
\d 任意数字
~K 任意汉字
~m 全角空格
~ 表意字空格
~i 在此缩进对齐
+? 最短匹配
\s 空格(任何空格或制表符)
{2,3} 重复2到3次
() 按照需要内容编组
\1 查到的第1个编组内容
[~k\s] 任意汉字和任意空格
$ 段尾 [位置]
$0 查找到的所有文本
$1 查找结果1
这个我也是学习了一段时间才基本弄明白
关键的是要知道这个表达式如何用
首先在写表达式是英文状态
这些是最常用的,最后面有找到的所有表达式
正则表达式查找示例
^(.+?)
段首任意可打印字符

^(.+?)(~K+)
这里只查找汉字,有其他的符号或者数字都会打断


^(.+?)(~K+)(\t)
会查找到后面的制表符,这里如果出现特殊符号或者数字有可能就会跳过查找不到

可以写成
^(.+?\t)或^(.+?)(\t) 不限制只是查找汉字(~K+)

^(.+?)(\t )(\d+)
就会把后面的页码数字查找到

^(.+?)(\t)(\d+)(\r)(.+?)
已经能查找到第二行的文字了(这里标的2是第二行的意思,不要理解为第二组数组)

查找内容
^(.+?)(\t)(\d+)(\r)(.+?)(\t)(\3)
查找两行的内容,每一组()括号里面的是一组,第二段里面的(\t)也可以写成(\2)表示查找的和前面第二组内容是相同的字表附,(\3)和前面查找的第三组相同的一个数字或多个数字(就和相同的数组是一样的),因为要查找相同页码的内容做合并,同时查找两行内容如果字表附和数字不是相同的字符就会跳过
更改为
需要保留重新排的有第一组文字(.+?)第五组文字(.+?)第二组制表符(\t)第三组数字(\d+)
(这样写是为了说明需要保留排序的是这几组数据)
在需要更改的结果位置不能直接写查找到的字符,为了区分所以系统给出了不同的书写方式来代表上面的组
这里先把需要的写出来,可以添加其他的字符在里面,比如$1和$5中间添加了空格,在最后的结果中$1和$5就会被隔开就可以和二级目录对其了
$1 $5$2 $3

结果还是可以的

想给上面页码统一添加一个括号
比如: ………………(8)
………………(12)
直接查找(\d+) 查到所有的数字组
更改为($1)
就可以了
注意⚠️:前面做的时候没有说到
更改为下面有一个搜索(搜索范围)没有选择
我们查找的是目录文章里面的内容
需要调整为文章,在全部更改的时候就只调整目录文章里面的内容
如果选的是文档,可能会把整个文档里面相似的都做调整
做好的每个正则都可以保存复用,下次遇到同样的问题直接选择查找替换就可以了,
相同的问题不用重复写
可以在网上下载一个“正则查询管理器”脚本,保存的都能显示,还是很好用的
重点
看了上面的表达式有的地方有可能还是不太理解
那么正直的福利来了(已经尽力解释了之间的关系)
(\d+) 查找一个或多个数字
(?<=~K)\d+ ?<=肯定正查 ~K任意汉字 \d数字 +一个或多个
查找任意汉字后面一个或者多个汉字
(?<=~K)\, 查找任意汉字后面一个逗号(逗号要和文章内容里面的格式一样)
(?<=~K)\* 查找任意汉字后面一个※(※同样需要和文章内容里面的格式一样)
^(.+?) ^段首 .任意可打印字符 +一个或多个 ?零次或一次
查找段首任意的第一个字符
^(.+?)(~K+) 查找到段首的连续汉字,(中间有空格符号数字其他都会断开)
^(.+?)(~K+)(\t) 查到段首连续任意汉字制表符(内容中有其他字段都会跳过)
^(.+?)(\t) 查找到段首后面有制表符的内容
^(.+?)(\t)(\d+) 查找到段首制表符页码(如果页面前面有空格会查找不到,在(\d+)前面添加一个空格)
^(.+?)(\t)(\d+)(\r)(.+?)(\t)(\3)
\r 段落结尾到下一行 第二个(\t)可以写成(\2)表示查找到和第二个字段相同(\3)查找和第三个字段相同,如果是页码,就可以找到相同的页码,不一样的就自动跳过
正则表达式替换示例(把查到到的字符重新组合排列,添加其他字符)
$1-9 查找到的第一到第九组字符,按照自己想要的顺序重新组合排列,不需要的字符组不用写,会自动删除,可以在需要的字符组之间添加新的字符
($1) 结果会保留第一组的所有字符并且在前面添加( 后面添加)
$1 $5$2 $3 顺序自由组合
所有表达式:(附)
字符 GREP 选项卡元字符
制表符字符 \t
段落结尾 \r
强制换行 \n
任何页码 ~#
当前页码 ~N
下转页码 ~X
上接页码 ~V
* 任何变量 ~v
章节标志符 ~x
* 定位对象标志符 ~a
* 脚注引用标志符 ~F
* 索引标志符 ~I
半角中点 ~8
日文中点 ~5
尖角符号 \^
反斜线字符 \\
版权符号 ~2
省略号 ~e
代字符 \~
段落符号 ~7
注册商标符号 ~r
章节符号 ~6
商标符号 ~d
左圆括号字符 \(
右圆括号字符 \)
左大括号字符 \{
右大括号字符 \}
左方括号字符 \[
右方括号字符 \]
全角破折号 ~_
半角破折号 ~=
自由连字符 ~-
不间断连字符 ~~
表意字空格 ~(
全角空格 ~m
半角空格 ~>
三分之一空格 ~3
四分之一空格 ~4
六分之一空格 ~%
右齐空格 ~f
细空格 ~|
不间断空格 ~s
不间断空格(固定宽度) ~S
窄空格 ~<
数字空格 ~/
标点空格 ~.
^ 剪贴板内容(带格式) ~c
^ 剪贴板内容(不带格式) ~C
任何双引号 "
任何单引号 '
直双引号 ~"
英文左双引号 ~{
英文右双引号 ~}
直单引号 ~'
英文左单引号 ~[
英文右单引号 ~]
标准回车符 ~b
分栏符 ~M
框架分隔符 ~R
分页符 ~P
奇数页分页符 ~L
偶数页分页符 ~E
自由换行符 ~k
右对齐制表符 ~y
在此缩进对齐 ~i
在此处结束嵌套样式 ~h
可选分隔符 ~j
* 动态页眉(段落样式)变量 ~Y
* 动态页眉(字符样式)变量 ~Z
* 自定文本变量 ~u
* 最后页码变量 ~T
* 章节编号变量 ~H
* 创建日期变量 ~S
* 修改日期变量 ~o
* 输出日期变量 ~D
* 文件名变量 ~l(L 小写形式)
* 任意数字 \d
* 不是数字的任何字符 \D
* 任意字母 [\l\u]
* 任意字符 . (在“更改为”中插入句点)
* 空格(任何空格或制表符) \s(在“更改为”中插入空格)
* 不是空格的任何字符 \S
* 任意字符 \w
* 不是单词字符的任何字符 \W
* 任何大写字母 \u
* 不是大写字母的任何字符 \U
* 任何小写字母 \l
* 不是小写字母的任何字符 \L
^ 所有找到的文本 $0
查找到的文本 1-9 $1(指定查找到的编组数量,如 $3 表示查找到的第三个文本)
* 汉字 ~K
* 词首 \<
* 词尾 \>
* 文字边界 \b
* 非文字边界 \B
* 段首 ^
* 段尾 [位置] $
* 零次或一次 ?
* 零次或多次 *
* 一次或多次 +
* 零次或一次(最短匹配) ??
* 零次或多次(最短匹配) *?
* 一次或多次(最短匹配) +?
* 标记子表达式 ( )
* 非标记子表达式 (?: )
* 字符集 [ ]
* 或者 |
* 肯定反查 (?<= )
* 否定反查 (?<!)
* 肯定正查 (?= )
* 否定正查 (?! )
* 不区分大小写打开 (?i)
* 不区分大小写关闭 (?-i)
* 多行打开 (?m)
* 多行关闭 (?-m)
* 单行打开 (?s)
* 单行关闭 (?-s)
* 任何字母数字字符 [[:alnum:]]
* 任何字母字符 [[:alpha:]]
* 任何空白字符(空格或制表符) [[:blank:]]
* 任何控制字符 [[:control:]]
* 任何图形字符 [[:graph:]]
* 任何可打印的字符 [[:打印:]]
* 任何标点字符 [[:punct:]]
* 任何代码大于 255 的字符(仅适用于宽字符特性类) [[:unicode:]]
* 任何十六进制数字字符 0-9、a-f 和 A-F [[:xdigit:]]
* 某种字形集中的任何字符,如 a、à、á、â、ã、ä、å、A、À、Á、Â、Ã、Ä 和 Å [[=a=]]










































































