2010-03-22 3 views
3

Qu'est-ce que C# expression régulière remplacerait tous ces:Quelle expression régulière supprimerait tous les attributs d'une balise BR?

<BR style=color:#93c47d> 
<BR style=color:#fefefe> 
<BR style="color:#93c47d"> 
<BR style="color:#93c47d ..."> 
<BR> 
<BR/> 
<br style=color:#93c47d> 
<br style=color:#fefefe> 
<br style="color:#93c47d"> 
<br style="color:#93c47d ..."> 
<br> 
<br/> 

avec:

<br/> 

essentiellement "supprimer tous les attributs de tout élément de BR et minuscules il".

+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – thecoop

+0

@thecoop: Cela ne concerne que l'analyse HTML, qui cette question ne nécessite pas. Dans ce cas, la seule chose qui pourrait casser la regex est s'il y avait un ">" à l'intérieur d'un attribut, ce qui, je pense, n'est pas valide de toute façon. –

+0

Qui est l'homme qui a pensé à ce HTML? Je ne peux pas imaginer un cas d'utilisation. – Dykam

Répondre

8

Quelque chose comme:

Regex.Replace(myString, "<br[^>]*>", "<br/>", RegexOptions.IgnoreCase); 

ou sans IgnoreCase:

Regex.Replace(myString, "<[Bb][Rr][^>]*>", "<br/>"); 
+0

qui fonctionne bien, merci! –

0

En supposant que vous n'a jamais eu d'attributs après le style, je serais prêt à parier quelque chose comme

class Program 
{ 
    const string SOURCE = @"<BR style=color:#93c47d> 
<BR style=color:#fefefe> 
<BR style=""color:#93c47d""> 
<BR style='color:#93c47d'> 
<BR> 
<BR/> 
<br style=color:#93c47d> 
<br style=color:#fefefe> 
<br style=""color:#93c47d""> 
<br style='color:#93c47d'> 
<br> 
<br/>"; 

    static void Main(string[] args) 
    { 
    const string EXPRESSION = @"(style=[^""'][^>]*)|(style=""[^""]*"")|(style='[^']*')"; 

    var regex = new Regex(EXPRESSION); 

    Console.WriteLine(regex.Replace(SOURCE, string.Empty)); 
    } 
} 

Vous pourriez être mieux avec une solution programmatique s'il y a des attributs écrits dans au ag après l'attribut de style.

Questions connexes