利用正则表达式进行中文排版的实例教程
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">前言</a></li><li><a href="#_label1">〇、常见匹配类</a></li><li><a href="#_label2">一、段落排版类</a></li><ul class="second_class_ul"><li><a href="#_lab2_2_0">1、非段落换行排版(要求段落之间空一行)</a></li><li><a href="#_lab2_2_1">2、插入空行</a></li><li><a href="#_lab2_2_2">3、删除空行</a></li><li><a href="#_lab2_2_3">4、行首批量添加(替换项为2个空格时可实现首行缩进)</a></li><li><a href="#_lab2_2_4">5、行尾批量添加</a></li><li><a href="#_lab2_2_5">6、半角引号替换为全角引号</a></li><li><a href="#_lab2_2_6">7、半角单引号替换全角</a></li><li><a href="#_lab2_2_7">8、固定宽度加硬回车(下例为宽度50)</a></li></ul><li><a href="#_label3">二、删除特定字符串类</a></li><ul class="second_class_ul"><li><a href="#_lab2_3_8">1、删除行前空格</a></li><li><a href="#_lab2_3_9">2、删除行尾空格</a></li><li><a href="#_lab2_3_10">3、删除包含指定关键字的行</a></li><li><a href="#_lab2_3_11">4、删除以指定关键字开头的行</a></li><li><a href="#_lab2_3_12">5、删除HTML注释</a></li><li><a href="#_lab2_3_13">6、删除HTML标签</a></li><li><a href="#_lab2_3_14">7、删除HTML标签内的全部</a></li></ul><li><a href="#_label4">三、中文汉字处理类</a></li><ul class="second_class_ul"><li><a href="#_lab2_4_15">1、中文和英文之间加空格</a></li><li><a href="#_lab2_4_16">2、英文和中文之间加空格</a></li><li><a href="#_lab2_4_17">3、中文和数字之间加空格</a></li><li><a href="#_lab2_4_18">4、数字和中文之间加空格</a></li><li><a href="#_lab2_4_19">5、上述替换整合</a></li><li><a href="#_lab2_4_20">6、删除硬回车</a></li></ul><li><a href="#_label5">四、章节处理类</a></li><ul class="second_class_ul"><li><a href="#_lab2_5_21">1、序号变为章节</a></li><li><a href="#_lab2_5_22">2、章节之间加换行</a></li><li><a href="#_lab2_5_23">3、章节样式替换</a></li></ul><li><a href="#_label6">五、巧妙利用正则表达式排版</a></li><ul class="second_class_ul"></ul><li><a href="#_label7">总结</a></li><ul class="second_class_ul"></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>前言</h2><p>中文排版是字处理的一个基本功能,目前有些文字排版软件,例如“排版助手”等等,可以完成一些通用的中文排版功能,但是对于一些复杂的个性化排版功能就无法实现,实际上,我们通过在一些常用的支持正则的代码编辑软件里,使用正则表达式,就可以完成很多复杂的排版功能,下面将举一些常用的例子。</p>
<p>代码编辑软件可使用Notepad++或Editplus,两者的正则表达式对于换行有一点点差别,一个用\r\n,另一个用\n。下面以Editplus为例,讲述一下操作方法,先用Editplus打开一个中文文件,然后点“替换”,点击“使用正则表达式”,然后在“查找项”和“替换项”里输入以下字符串,即可实现特定的排版功能。</p>
<p>此外,在“替换”界面中点“常用项”,可以把经常使用的规则保存为功能列表,这样,使用某个功能的时候,直接调用即可获取相关代码。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202202/2022215110630406.png?202211511646" /></p>
<p class="maodian"><a name="_label1"></a></p><h2>〇、常见匹配类</h2>
<p>匹配中文字符的正则表达式:[\u4e00-\u9fa5]</p>
<p>匹配双字节字符(包括汉字在内):[^\x00-\xff]</p>
<p>匹配特殊字符 :((?=[\x21-\x7e]+)[^A-Za-z0-9])</p>
<p>匹配所有的半角空白字符:[ \f\r\t\n]</p>
<p>匹配隐藏字符:[\u0000-\u001F]</p>
<p class="maodian"><a name="_label2"></a></p><h2>一、段落排版类</h2>
<p class="maodian"><a name="_lab2_2_0"></a></p><h3>1、非段落换行排版(要求段落之间空一行)</h3>
<p>查找项:([^\n])\n</p>
<p>替换项:\1</p>
<p class="maodian"><a name="_lab2_2_1"></a></p><h3>2、插入空行</h3>
<p>查找项:\n</p>
<p>替换项:\n\n</p>
<p class="maodian"><a name="_lab2_2_2"></a></p><h3>3、删除空行</h3>
<p>查找项:^\s*\n</p>
<p>替换项:空</p>
<p class="maodian"><a name="_lab2_2_3"></a></p><h3>4、行首批量添加(替换项为2个空格时可实现首行缩进)</h3>
<p>查找项:^</p>
<p>替换项:我是行首aaa</p>
<p class="maodian"><a name="_lab2_2_4"></a></p><h3>5、行尾批量添加</h3>
<p>查找项:\n</p>
<p>替换项:bbb我是行尾\n</p>
<p class="maodian"><a name="_lab2_2_5"></a></p><h3>6、半角引号替换为全角引号</h3>
<p>查找项:\"([^\"\']*)\"</p>
<p>替换项:“\1”</p>
<p class="maodian"><a name="_lab2_2_6"></a></p><h3>7、半角单引号替换全角</h3>
<p>查找项:\'([^\"\']*)\'</p>
<p>替换项:‘\1’</p>
<p class="maodian"><a name="_lab2_2_7"></a></p><h3>8、固定宽度加硬回车(下例为宽度50)</h3>
<p>查找项:(.{1,50})</p>
<p>替换项:\1\n</p>
<p class="maodian"><a name="_label3"></a></p><h2>二、删除特定字符串类</h2>
<p class="maodian"><a name="_lab2_3_8"></a></p><h3>1、删除行前空格</h3>
<p>查找项:^[ \s]*</p>
<p>替换项:空</p>
<p class="maodian"><a name="_lab2_3_9"></a></p><h3>2、删除行尾空格</h3>
<p>查找项:[ \s]*$</p>
<p>替换项:空</p>
<p class="maodian"><a name="_lab2_3_10"></a></p><h3>3、删除包含指定关键字的行</h3>
<p>查找项:^.*(指定关键字).*$</p>
<p>替换项:空</p>
<p class="maodian"><a name="_lab2_3_11"></a></p><h3>4、删除以指定关键字开头的行</h3>
<p>查找项:^(指定关键字)[^\n]+\n</p>
<p>替换项:空</p>
<p class="maodian"><a name="_lab2_3_12"></a></p><h3>5、删除HTML注释</h3>
<p>查找项:<!--(.*?)--></p>
<p>替换项:空</p>
<p class="maodian"><a name="_lab2_3_13"></a></p><h3>6、删除HTML标签</h3>
<p>查找项:<[^>]+></p>
<p>替换项:空</p>
<p class="maodian"><a name="_lab2_3_14"></a></p><h3>7、删除HTML标签内的全部</h3>
<p>查找项:<(.*)>.*<\/\1>|<(.*) \/></p>
<p>替换项:空</p>
<p class="maodian"><a name="_label4"></a></p><h2>三、中文汉字处理类</h2>
<p class="maodian"><a name="_lab2_4_15"></a></p><h3>1、中文和英文之间加空格</h3>
<p>查找项:([\u4e00-\u9fa5]+)(+)</p>
<p>替换项:\1 \2</p>
<p class="maodian"><a name="_lab2_4_16"></a></p><h3>2、英文和中文之间加空格</h3>
<p>查找项:(+)([\u4e00-\u9fa5]+)</p>
<p>替换项:\1 \2</p>
<p class="maodian"><a name="_lab2_4_17"></a></p><h3>3、中文和数字之间加空格</h3>
<p>查找项:([\u4e00-\u9fa5]+)(+)</p>
<p>替换项:\1 \2</p>
<p class="maodian"><a name="_lab2_4_18"></a></p><h3>4、数字和中文之间加空格</h3>
<p>查找项:(+)([\u4e00-\u9fa5]+)</p>
<p>替换项:\1 \2</p>
<p class="maodian"><a name="_lab2_4_19"></a></p><h3>5、上述替换整合</h3>
<p>查找项:([\u4e00-\u9fa5]+)(+)|(+)([\u4e00-\u9fa5]+)|(+)([\u4e00-\u9fa5]+)|([\u4e00-\u9fa5]+)(+)</p>
<p class="maodian"><a name="_lab2_4_20"></a></p><h3>6、删除硬回车</h3>
<p>查找项:(+)([\u4e00-\u9fa5]+)</p>
<p>替换项:\1 \2</p>
<p class="maodian"><a name="_label5"></a></p><h2>四、章节处理类</h2>
<p class="maodian"><a name="_lab2_5_21"></a></p><h3>1、序号变为章节</h3>
<p>查找项:\n([\u4e00-\u9fa5]{1,2})\n</p>
<p>替换项:\n第\1章\n</p>
<p class="maodian"><a name="_lab2_5_22"></a></p><h3>2、章节之间加换行</h3>
<p>查找项:第(.*)章</p>
<p>替换项:\n第\1章</p>
<p class="maodian"><a name="_lab2_5_23"></a></p><h3>3、章节样式替换</h3>
<p>查找项:<p>(第.{1,5}章.*)</p></p>
<p>替换项:<h1>\1</h1></p>
<p class="maodian"><a name="_label6"></a></p><h2>五、巧妙利用正则表达式排版</h2>
<p>中文和英文之间加空格</p>
<div class="jb51code"><pre class="brush:js;">([\u4e00-\u9fa5]+)(+)</pre></div>
<p>然后使用</p>
<div class="jb51code"><pre class="brush:js;">$1 $2</pre></div>
<p>中文和数字之间加空格</p>
<div class="jb51code"><pre class="brush:js;">(+)([\u4e00-\u9fa5]+)</pre></div>
<p>然后使用</p>
<div class="jb51code"><pre class="brush:js;">$1 $2</pre></div>
<p>一下替换</p>
<div class="jb51code"><pre class="brush:js;">([\u4e00-\u9fa5]+)(+)|(+)([\u4e00-\u9fa5]+)|(+)([\u4e00-\u9fa5]+)|([\u4e00-\u9fa5]+)(+)</pre></div>
<p class="maodian"><a name="_label7"></a></p><h2>总结</h2>
頁:
[1]