using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @".*?<li.*?<a href=""(\/release[^""]+)"">([^<]+)<\/a>.*?<\/li>";
string substitution = @"$2 https://www.beatport.com$1\n";
string input = @" <li class=""bucket-item ec-item horz-release"" data-ec-position=""87""
data-ec-type=""product""
data-ec-name=""Perfect Storm""
data-ec-creative=""Label - Releases""
data-ec-brand=""Interplay Global""
data-ec-category=""Releases""
data-ec-list=""Label - Releases""
data-ec-price=""1.29""
data-ec-d1=""David Deere, Brandon Mignacca"">
<div class=""horz-release-artwork-parent"">
<a href=""/release/perfect-storm/3265557"">
<img class=""horz-release-artwork lazy-load"" src=""https://geo-pro.beatport.com/static/60b2f914842e8b09024754e8a6493b36.png"" data-src=""https://geo-media.beatport.com/image_size/250x250/cd9e7e36-d598-45c2-a05c-d2e286a0bcb1.jpg"" />
</a>
</div>
<div class=""horz-release-meta-parent"">
<div class=""horz-release-meta"">
<p class=""buk-horz-release-title""><a href=""/release/perfect-storm/3265557"">Perfect Storm</a></p>
<p class=""buk-horz-release-artists"">
<a href=""/artist/david-deere/31534"" data-artist=""31534"">David Deere</a>,
<a href=""/artist/brandon-mignacca/523042"" data-artist=""523042"">Brandon Mignacca</a>
</p>
<p class=""buk-horz-release-labels"">
<a href=""/label/interplay-global/93385"" data-label=""93385"">Interplay Global</a></p>
<p class=""buk-horz-release-released"">2021-02-12</p>
</div>
<div class=""horz-release-actions-parent"">
<div class=""horz-release-actions"">
<div class=""horz-release-play-queue"">
<button class=""playable-play"" data-type=""release"" data-id=""3265557"" data-track=""14824920"">
<svg viewBox=""0 0 200 200"" class=""play-icon"">
<use xlink:href=""/static/4fef40cebd6b915bcbe9695d5d543a01.svg#icon-play""></use>
</svg>
</button>
<button class=""playable-queue tooltip-secondary"" data-type=""release"" data-id=""3265557"" data-track=""14824920"">
<svg viewBox=""0 0 16 11"" class=""queue-icon"">
<use xlink:href=""/static/4fef40cebd6b915bcbe9695d5d543a01.svg#icon-add-queue""></use>
</svg>
<span class=""tooltiptext"">Add to queue</span>
</button>
</div>
<div class=""buy-button horz-release-buy-button
"" data-release=""3265557"" data-price=""$1.29"" >
<button class=""add-to-default"">$1.29</button>
<button class=""launch-menu"">
<div class=""launch-menu-icon"">
<svg viewBox=""0 0 200 200"" class=""icon"">
<use xlink:href=""/static/4fef40cebd6b915bcbe9695d5d543a01.svg#icon-chevron-down""></use>
</svg>
</div>
<div class=""loading-menu-icon"">
<div class=""icon""></div>
</div>
</button>
</div>
</div>
<a href=""#"" class=""icon icon-ellipsis horz-release-ellipsis mobile-action""></a>
</div>
</div>
</li>
<li class=""bucket-item ec-item horz-release"" data-ec-position=""88""
data-ec-type=""product""
data-ec-name=""Glasshouse""
data-ec-creative=""Label - Releases""
data-ec-brand=""Interplay Global""
data-ec-category=""Releases""
data-ec-list=""Label - Releases""
data-ec-price=""1.29""
data-ec-variant=""album""
data-ec-id=""3265543""
data-ec-d1=""Hiski, Milad E"">
<div class=""horz-release-artwork-parent"">
<a href=""/release/glasshouse/3265543"">
<img class=""horz-release-artwork lazy-load"" src=""https://geo-pro.beatport.com/static/60b2f914842e8b09024754e8a6493b36.png"" data-src=""https://geo-media.beatport.com/image_size/250x250/d45916cd-e96a-4669-9cd1-d71b28c21258.jpg"" />
</a>
</div>
<div class=""horz-release-meta-parent"">
<div class=""horz-release-meta"">
<p class=""buk-horz-release-title""><a href=""/release/glasshouse/3265543"">Glasshouse</a></p>
<p class=""buk-horz-release-artists"">
<a href=""/artist/hiski/574515"" data-artist=""574515"">Hiski</a>,
<a href=""/artist/milad-e/581122"" data-artist=""581122"">Milad E</a>
</p>
<p class=""buk-horz-release-labels"">
<a href=""/label/interplay-global/93385"" data-label=""93385"">Interplay Global</a></p>
<p class=""buk-horz-release-released"">2021-02-05</p>
</div>
<div class=""horz-release-actions-parent"">
<div class=""horz-release-actions"">
<div class=""horz-release-play-queue"">
<button class=""playable-play"" data-type=""release"" data-id=""3265543"" data-track=""14824888"">
<svg viewBox=""0 0 200 200"" class=""play-icon"">
<use xlink:href=""/static/4fef40cebd6b915bcbe9695d5d543a01.svg#icon-play""></use>
</svg>
</button>
<button class=""playable-queue tooltip-secondary"" data-type=""release"" data-id=""3265543"" data-track=""14824888"">
<svg viewBox=""0 0 16 11"" class=""queue-icon"">
<use xlink:href=""/static/4fef40cebd6b915bcbe9695d5d543a01.svg#icon-add-queue""></use>
</svg>
<span class=""tooltiptext"">Add to queue</span>
</button>
</div>
<div class=""buy-button horz-release-buy-button
"" data-release=""3265543"" data-price=""$1.29"" >
<button class=""add-to-default"">$1.29</button>
<button class=""launch-menu"">
<div class=""launch-menu-icon"">
<svg viewBox=""0 0 200 200"" class=""icon"">
<use xlink:href=""/static/4fef40cebd6b915bcbe9695d5d543a01.svg#icon-chevron-down""></use>
</svg>
</div>
<div class=""loading-menu-icon"">
<div class=""icon""></div>
</div>
</button>
</div>
</div>
<a href=""#"" class=""icon icon-ellipsis horz-release-ellipsis mobile-action""></a>
</div>
</div>
</li>";
RegexOptions options = RegexOptions.Singleline;
Regex regex = new Regex(pattern, options);
string result = regex.Replace(input, substitution);
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx