Мне нужно заменить все экземпляры соответствия, но только в определенных тегах.Regex заменить все в наборе тегов
Для примера рассмотрим страницу HTML, которая имеет <body>...</body>
внутри этих тегов, мне нужно, чтобы заменить все вхождение, скажем:
{embed=xxx}
в
<a href="xxx">xxx</a>
Я могу это сделать для всей страницы, используя что-то вроде (попытка № 1):
match={embed=(.*?)}
replace=<a href="$1">$1</a>
, но это заменяет все части страницы даже на тех участках, где я не хочу, чтобы он был заменен, в основном, на головную часть.
Когда я пытаюсь добавить условия вокруг матча, определенного выше, как это (попытка 2 #):
match=(<body.*?)(?:({embed=(.*?)})+)(.*?)(</body)
replace=$1<a href="$3">$3</a>$4$5
если только заменяет первый элемент.
Так что, если я использую это примеры текстовых данных для поиска:
<head>
{embed=zzz}
</head>
<body>
{embed=aaa}<br />
{embed=bbb}<br />
{embed=ccc}<br />
</body>
я получаю:
<head>
{embed=zzz}
</head>
<body>
<a href="aaa">aaa</a>aaa<br />
{embed=bbb}<br />
{embed=ccc}<br />
</body>
В идеале выход я хочу это:
<head>
{embed=zzz}
</head>
<body>
<a href="aaa">aaa</a><br />
<a href="bbb">bbb</a><br />
<a href="ccc">ccc</a><br />
</body>
Я знаю, что я Вероятнее всего, это усложняет ситуацию, но регулярное выражение похоже на масло моей мозговой воды - они просто не смешиваются.
Благодарим за информацию. Пока я пишу свое приложение в .NET, мое приложение для проверки регулярных выражений не должно быть написано на .NET, потому что я не видел этого поведения. – NFX