用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章