使用正则表达式进行中英混排

中英混排的一个要点是,英文单词/数字/表达式与汉字相邻时,应引入空格分开。

比如:

$S^\prime$对FIFO存在Belady现象

应修改为:

$S^\prime$ 对 FIFO 存在 Belady 现象

微软的 Word 可以自动完成,而且如果原来已有空格,不会造成影响。
在其他的编辑器上,我们可以使用正则表达式实现这样的效果

(?

可以选中所有这样的单词/数字/表达式,并将单词捕获,使用

 \1 

替换即可完成。

注意是一个空格,接着一个\1,再加上一个空格。

这里主要利用的是,英文使用ascii编码,这里假设ascii范围外的均为应用空格隔开的字符。

([\x00-\x09\x0B-\x1F\x21-\x7F]+)描述了一个或多个ascii码组成的序列。但其中不存在换行(\n\x0A)以及空格(\x20

我们希望选中的序列两侧都是非ascii字符,因此使用逆序环视和正序环视,表达两侧均非ascii编码。

至此,我们已能选中两侧均非英文字符的序列。删去其中一个环视,可以选择单侧,替换时也做相应修改即可。

将来也许将三者结合到一起,不过目前已足够使用。

你可能感兴趣的:(使用正则表达式进行中英混排)