用boost的正则替换解决问题

来源:互联网 发布:网络歌曲2017 编辑:程序博客网 时间:2024/06/06 03:28

近日有一个网友问我如下的文本怎么替换

内容如下:

<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.csdn.net/fjye/archive/2008/02/02/2078716.aspx

原创粉丝点击