2012-04-18 3 views
1

Я ищу выражение регулярного выражения, которое добавит атрибут к элементу, который уже имеет атрибут с определенным значением.Добавить атрибут элемента, который имеет атрибут с определенным значением

для например:

<meta name="stack" /> 

Я хочу, чтобы добавить атрибут в мета-элемент, который имеет имя атрибута = «стек» таким образом, что он будет выглядеть

<meta name="stack" value="overflow" /> 

Также некоторые C# кода для соответствия и замены поможет.

Я не могу использовать XmlDocument или HtmlAgilityPack из-за неправильного ввода xml.

Спасибо.

+0

Уч. Добавление атрибутов не является тривиальным с регулярным выражением и должно действительно выполняться с каким-то синтаксическим анализатором. Вы уверены, что нет никаких опций, кроме регулярного выражения? Это может стать довольно волосатым. : -/ – Wiseguy

ответ

2
(<\s*meta\s+name\s*=\s*"stack")(\s*/>) 

заменить

$1 value="overflow" $2 
+0

как я мог это сделать независимо от позиции атрибута, например, если другой атрибут перед именем = "стек", как

+0

(<\ s * meta \ s + (. *) ?) name \ s * = \ s * "stack") (\ s * />) работает –

2

Начнет со следующим регулярным выражением ...

<meta[^>]+name="stack" 

И заменить ...

$0 value="overflow" 

$0 в замене строке представляет весь матч. Тогда вы просто добавляете value="overflow" в конце этого.

Вот рабочий пример ...

http://regexhero.net/tester/?id=586c2040-8700-4ea2-a146-1477ca1bcb62

Просто нажмите на кнопку «.NET» в верхней части Regex героя, чтобы увидеть код .NET для этого. Или вот упрощенная версия ...

return Regex.Replace(text, @"<meta[^>]+name=""stack""", @"$0 value=""overflow"""); 
Смежные вопросы