|
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
|
|
|
namespace NzbDrone.Core.Parser
|
|
|
|
{
|
|
|
|
public class RegexReplace
|
|
|
|
{
|
|
|
|
private readonly Regex _regex;
|
|
|
|
private readonly string _replacementFormat;
|
|
|
|
private readonly MatchEvaluator _replacementFunc;
|
|
|
|
|
|
|
|
public RegexReplace(string pattern, string replacement, RegexOptions regexOptions)
|
|
|
|
{
|
|
|
|
_regex = new Regex(pattern, regexOptions);
|
|
|
|
_replacementFormat = replacement;
|
|
|
|
}
|
|
|
|
|
|
|
|
public RegexReplace(string pattern, MatchEvaluator replacement, RegexOptions regexOptions)
|
|
|
|
{
|
|
|
|
_regex = new Regex(pattern, regexOptions);
|
|
|
|
_replacementFunc = replacement;
|
|
|
|
}
|
|
|
|
|
|
|
|
public string Replace(string input)
|
|
|
|
{
|
|
|
|
if (_replacementFunc != null)
|
|
|
|
{
|
|
|
|
return _regex.Replace(input, _replacementFunc);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return _regex.Replace(input, _replacementFormat);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public bool TryReplace(ref string input)
|
|
|
|
{
|
|
|
|
var result = _regex.IsMatch(input);
|
|
|
|
if (_replacementFunc != null)
|
|
|
|
{
|
|
|
|
input = _regex.Replace(input, _replacementFunc);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
input = _regex.Replace(input, _replacementFormat);
|
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
public override string ToString()
|
|
|
|
{
|
|
|
|
return _regex.ToString();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|