Я знаю, что использование регулярных выражений для разбора или манипулирования HTML / XML - плохая идея, и я обычно никогда бы этого не сделал.Но учитывая это из-за отсутствия альтернатив.
Мне нужно заменить текст внутри строки, которая еще не является частью тега (в идеале тег span с определенным идентификатором), используя C #.
ДляНапример, допустим, я хочу заменить в следующем тексте все элементы ABC, которые не находятся внутри промежутка, на альтернативный текст (еще один промежуток в моем случае)
ABC at start of line or ABC here must be replaced but, <span id="__publishingReusableFragment" >ABC inside span must not be replaced with anything. Another ABC here </span> this ABC must also be replaced
Я пытался использоватьрегулярное выражение с обоими смотреть вперед и смотреть за утверждением.Различные комбинации по линиям
string regexPattern = "(?<!id=\"__publishingReusableFragment\").*?" + stringToMatch + ".*?(?!span)";
, но отказались от этого.
Я пытался загрузить его в XElement и попытаться создать оттуда писателя и получить текст не внутри узла,Но и этого не смог понять.
XElement xel = XElement.Parse("<payload>" + inputString + @"</payload>");
XmlWriter requiredWriter = xel.CreateWriter();
Я надеюсь как-нибудь использовать писатель, чтобы получить строки, которые не являются частью узла, и заменить их.
По сути, яоткрыт для любых предложений / решений для решения этой проблемы.
Заранее спасибо за помощь.