处理文本
hexo next主题 生成的代码块html代码,如下所示1
2
3
4
5
6
7
8
9
10
11
12<figure class="highlight plain">
<table>
<tr>
<td class="gutter">
<pre><span class="line">1</span><br></pre>
</td>
<td class="code">
<pre><span class="line"><div class="post-body".*?>(.+)<\/div></span><br></pre>
</td>
</tr>
</table>
</figure>
现在把这段代码转为原生的markdown代码块:
获取代码文本
删除代码块行数
匹配正则1
<td class="gutter">(\s*.*?)+?<\/td>
替换正则
空字符串
替换结果1
2
3
4
5
6
7
8
9
10<figure class="highlight plain">
<table>
<tr>
<td class="code">
<pre><span class="line"><div class="post-body".*?>(.+)<\/div></span><br></pre>
</td>
</tr>
</table>
</figure>
替换换行符
代码文可能有多行,需要把换行符从<br>
换成\n
:
匹配正则:<br>
替换正则:\n
替换结果:1
2
3
4
5
6
7
8
9
10
11<figure class="highlight plain">
<table>
<tr>
<td class="code">
<pre><span class="line"><div class="post-body".*?>(.+)<\/div></span>
</pre>
</td>
</tr>
</table>
</figure>
删除剩下的所有html标签
删除掉行号之后,旧简单了,只要删除掉所有的html标签即可得到代码块中的文本
匹配正则1
<\/?.*?>
替换正则:空字符串
替换结果:1
2
3
4
5
6
<div class="post-body".*?>(.+)<\/div>
删除空行
匹配正则:^\s*$(\n|\r\n)*
替换正则:""
,空字符串
替换结果:1
<div class="post-body".*?>(.+)<\/div>
删除多余空白符
匹配正则:^\s{2}
替换正则:空字符串
替换结果:1
<div class="post-body".*?>(.+)<\/div>
HTML逆转义
我这里没有找到什么好的办法,暂时先使用穷举法来弄,就是把看到的html转移字符逐个进行替换。
<div class="post-body".*?>(.+)<\/div><
替换为<
"
替换为"
>
替换为>