2010-03-22 3 views
3

Что C# регулярное выражение заменит все эти:Какое регулярное выражение будет выделять все атрибуты из тега 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/> 

с:

<br/> 

в основном "удалить все атрибуты из любого BR элемента и строчных его".

+0

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

+0

@thecoop: Это актуально только для фактического анализа HTML, который этот вопрос не требует. В этом случае единственное, что может сломать регулярное выражение, - это наличие атрибута «>» внутри атрибута, который, как мне кажется, недействителен. –

+0

Кто этот человек, который думал об этом HTML? Не могу представить вариант использования. – Dykam

ответ

8

Что-то вроде:

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

Или без IgnoreCase:

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

, который работает красиво, спасибо! –

0

Предполагая, что вы никогда не имели каких-либо атрибутов после стиля, я бы поставил что-то вроде

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)); 
    } 
} 

Вы могли бы быть лучше с программным решением, если есть атрибуты, записанные в ag после атрибута стиля.

Смежные вопросы