用boost的正则替换解决问题

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

内容如下:

<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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值