上周四的晚上,为上海大辞科技做了一次有关正则表达式的在线公开课。回放在这里:
webinar回放:(江伟)正则在翻译中的趣味实战应用_哔哩哔哩_bilibili
当时虚拟了一些用例,嘚啵了两个多小时,意犹未尽。正则表达式,博大精深。一个荷兰人,甚至一辈子只钻研这个,开网站(https://www.regular-expressions.info/)、开公司、编软件、写书、写博客。这哥们儿是我最佩服的牛人之一,他的两款旗舰产品 - RegExBuddy 和 PowerGrep - 我好几年前就买了正版的,几乎每天都在用。话说,文字搜索替换,没有一条正则表达式解决不了的。如果有,那就再来一条!
前些天做了一个年报排版项目,今天早上客户发来修改意见,要求把台站编号后面标注的国家名称全部去掉,像面这些:
我所用的 CAT 工具 memoQ 和排版工具 Indesign,都支持正则,所以这个要求用正则很好解决。首先描述一下问题,那就是搜索汉字字符串,这个字符串前后有圆括号(具体点,就是全角的圆括号),开括号前面有1到多个大写英文字母和一到多个阿拉伯数字的编号,写成正则表达式就是: (?<=[A-Z]+\d+\s*)(([一-龤]{2,})),替换为空,下面是在RegExBuddy中的效果:
还不错,哈!
在核对这些替换(删除)实例时,我发现有一些不一致(即原文有国名的地方也标出来了),于是给客户发邮件询问这些地方是否也要删除,并且跟要他们修改之后的英文版文件。他们很快回信,并发来了最新的英文文件。我马上用(?<=[A-Z]+\d+\s*)([\(][\w ]{2,}[\)])这个正则搜索原文,没有发现一个实例,于是终于安心,客户是真的无一例外地把此类国名都删除了!那我照搬就是了!!