近日有一个网友问我如下的文本怎么替换
内容如下:
<p class=MsoNormal align=center style='text-align:center'>1. THUNBERGIA
Retzius, <span style='color:black'>Physiogr. S鋖sk. Handl.</span> 1(3): 163.
1780. nom. cons.</p>
<p class=MsoNormal align=center style='text-align:center'>1. <b>THUNBERGIA</b>
Retzius, <span style='color:black'>Physiogr. S鋖sk. Handl.</span> 1(3): 163.
1780. nom. cons.</p>
<p class=MsoNormal align=center style='text-align:center'>1. THBByERGIA
Retzius, <span style='color:black'>Phyddfogr. S鋖sk. Hanghl.</span> 1(6): 178.
1780. nom. cons.</p>
有三段<p>标记的文本,其中第二段有<b>标记
需要替换的规则是,在包含有<b>的标记的<p>段落的前后各加一些自定义的字符串,就是替换以后需要是这样:
<p class=MsoNormal align=center style='text-align:center'>1. THUNBERGIA
Retzius, <span style='color:black'>Physiogr. S鋖sk. Handl.</span> 1(3): 163.
1780. nom. cons.</p>
前填充<p class=MsoNormal align=center style='text-align:center'>1. <b>THUNBERGIA</b>
Retzius, <span style='color:black'>Physiogr. S鋖sk. Handl.</span> 1(3): 163.
1780. nom. cons.</p>后填充
<p class=MsoNormal align=center style='text-align:center'>1. THBByERGIA
Retzius, <span style='color:black'>Phyddfogr. S鋖sk. Hanghl.</span> 1(6): 178.
1780. nom. cons.</p>
一般的文本替换肯定实现不了,因为涉及一定的规则了,正好本人新发布的《超级批量文本替换 5.0》支持正则功能可以实现这样的替换
1、选择正则替换功能
2、查找字符串:(</s*p[^>]*>[^<]*?</s*b[^>]*>.*?</s*/b/s*>(.|/r/n)*?</s*/p/s*>)
3、替换为:前填充/1后填充
点替换就可以实现该网友的功能,超级批量文本替换的正则用的是boost的正则库,具体的语法可以参见本blog之前的文章
http://blog.youkuaiyun.com/fjye/archive/2008/02/02/2078716.aspx