using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"^(?P<artist>.+?(?=\s-\s)) # artist with pos. lookahead
\s-\s # space - space
(?P<title>.+?(?=(?:\(?Feat\.)|$)) # title with pos. lookahead
\(? # optional open parenthesis
(?P<artist2>Feat\.[^()\n]+)? # artist2 with Feat. before
\)? # optional closing parenthesis
(?P<subtitle>.+)?$ # optional subtitle";
string substitution = @"$1 $3 - $2$4";
string input = @"Black Coast - Trndsttr
Black Coast - Trndsttr (Feather)
Black Coast - Trndsttr (Lucian Remix)
Black Coast - Trndsttr (Feather) (Lucian Remix)
Black Coast - Trndsttr Feat. M. Maggie
Black Coast - Trndsttr (Feat. M. Maggie)
Black Coast - Trndsttr Feat. M. Maggie (Lucian Remix)
Black Coast - Trndsttr (Feat. M. Maggie) (Lucian Remix)
Black Coast - Trndsttr (Lucian Remix) Feat. M. Maggie
Black Coast - Trndsttr (Lucian Remix) (Feat. M. Maggie)
Black Coast - Trndsttr (Feather) (Lucian Remix) Feat. M. Maggie
Black Coast - Trndsttr (Feather) (Lucian Remix) (Feat. M. Maggie)
Black Coast - Trndsttr (Feather) Feat. M. Maggie (Lucian Remix)
Black Coast - Trndsttr (Feather) (Feat. M. Maggie) (Lucian Remix)
Black Coast - Trndsttr (Feather) (Feat. M. Maggie) Lucian Remix
Black Coast - Trndsttr (Feather) Feat. M. Maggie Lucian Remix
";
RegexOptions options = RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace;
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