Adobe InDesign中GREP查找替换保留括号内文本的问题求助
Adobe InDesign中GREP查找替换保留括号内文本的问题求助
嘿,咱们来搞定InDesign里这个GREP查找替换的问题,满足你保留阿拉伯语文本中括号内内容的需求!你之前试的(?<=\()[^()]+(?=\))没效果,是因为这个表达式只能选中括号里的文本,但没法处理括号外的内容——毕竟你要删除的是除了括号内文字之外的所有东西,包括括号本身。
给你两个可行的解决办法,按需选择:
方法一:一步到位的GREP替换
- 打开InDesign的「查找/更改」面板,切换到「GREP」选项卡
- 在「查找内容」框里输入:
(?s).*?\(([^()]+)\)|.+ - 在「更改为」框里输入:
$1\r - 点击「全部更改」
表达式说明:
(?s):开启单行模式,让.能匹配换行符,这样跨段落的内容也能被正确处理.*?\(([^()]+)\):先匹配任意内容直到遇到一对括号,同时把括号里的文本捕获到$1分组中|.+:如果遇到没有括号的内容,直接匹配整个内容块- 替换为
$1\r:匹配到括号内容时,输出捕获的文本加换行;匹配到无括号内容时,$1为空,相当于直接删除这些内容
操作完成后,所有括号内的文本会被单独保留,每个内容占一行,其他无关内容全被清除。
方法二:分两步操作(更直观)
如果你觉得一步到位的表达式有点复杂,可以拆成两步来做:
- 第一步:删除所有括号外的内容
- 查找内容:
(?s)(?!\()[^()]+(?<!\)) - 更改为:留空,点击「全部更改」
- 查找内容:
- 第二步:删除所有括号
- 查找内容:
[()] - 更改为:留空,点击「全部更改」
- 查找内容:
这样操作后,也能精准保留你需要的括号内文本,步骤更直观,容易理解。
另外,不用担心阿拉伯语字符的问题,InDesign的GREP引擎对阿拉伯字符的支持是完全没问题的~
备注:内容来源于stack exchange,提问作者Shahid
相关产品推荐
相关产品推荐

