Как заменить текст привязки тега с помощью C #? - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь заменить значение тега привязки с помощью регулярного выражения

Regex.Match(link, @"<a [^>]*>(.*?)</a>").Groups[1].Value.ToString();, что дает мне текст тега привязки.

Я пытался использовать «Regex. Replace», но не могузаменить точный текст.

Пример:

var link="<a href="">Sample text </a>";
           var requiredText="new Text";         
           Regex.Replace(link,"<a [^>]*>(.*?)</a>",requiredText);

Пожалуйста, помогите мне решить эту проблему.

Спасибо за помощь заранее

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Если содержимое тега привязки является чисто текстовым (без других тегов), вы можете добиться этого, используя позитивный взгляд назад и вперед.Не используя теги открытия и закрытия якоря, будет заменено только содержимое.

/(?<=>)[^<]*(?=<\/a>)/

Демо

string anchor = "<a href=\"\">Sample text </a>";
string requiredText = "new Text";
anchor = Regex.Replace(anchor, @"(?<=>)[^<]*(?=<\/a>)", requiredText);
Console.WriteLine(anchor); // <a href="">new Text</a>

Объяснение:

  • (?<=>) - Соответствует предыдущей закрывающей угловой скобке (lookbehind).
  • [^<]* - Соответствует и использует ноль или более символов, которые не являются открытой угловой скобкой.
  • (?=<\/a>) - Соответствует последующему закрывающему тегу привязки (lookahead).

Примечание: нам не нужно знать, какой тег был открыт в lookbehind, потому что закрывающий тег привязки должен закрывать последний открытыйтег.

0 голосов
/ 28 февраля 2019

Вы захватываете то, что находится между группой.

Вместо этого вы можете захватить то, что слева и справа в группе, и использовать эти две группы захвата $1 и $2 в замене:

var link=@"<a href="">Sample text </a>";
var requiredText="$1new Text$2";
link = Regex.Replace(link,"(<a [^>]*>).*?(</a>)",requiredText);
Console.WriteLine(link);
// <a href=">new Text</a>

См. Демонстрацию C #

Регламент будет соответствовать:

  • (<a [^>]*>) Группа захвата1
  • .*? Соответствует любому символу 0+ раз
  • (</a>) Группа захвата 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...