如何用条件替换这个文本?

时间:2013-01-21 17:15:07

标签: c# regex string replace

请参阅下一个代码。

<p>
<img src="http://jdjd" alt="" /><br />
Hola mama<br />
fdffdfdfdfd <img src="http://jdjd" alt="" /><br />
<img src="http://jdjd" alt="" /><br />
<span>Hola</span>
</p>

然后,以下绘制

enter image description here

请注意,我插入了三个<img>,其中两个是一行中唯一的元素,另一个是文本旁边的一个(fdffd .. + img)。

我不知道如何解决这个问题,但我希望当<img>不是一行中唯一的元素时,插入一个名为center的类。结果将是下一个:

<p>
<img class="center" src="http://jdjd" alt="" /><br />
Hola mama<br />
fdffdfdfdfd <img src="http://jdjd" alt="" /><br />
<img class="center" src="http://jdjd" alt="" /><br />
<span>Hola</span>
</p>

我想这可以使用正则表达式解决,但我不知道如何使用它。

1 个答案:

答案 0 :(得分:0)

使用正则表达式:

(</?(?:p|br|span)(?: */)?>\s*<img )([^>]*>\s*</?(?:p|br|span)(?: */)?>)

替换字符串:

"$1class='center' $2"

<强>解释

(                                 (Begin Group 1)
    </?(?:p|br|span)(?: */)?>     Find an opening or closing p, br or span tag
    \s*<img[ ]                    Followed by the start of a img tag
)                                 (End Group 1)
(                                 (Begin Group 2)
    [^>]*>                        Followed by the rest of the img tag
    \s*</?(?:p|br|span)(?: */)?>  Followed by an opening or closing p, br or span tag
)                                 (End Group 2)