diff --git a/src/Mnemonic.Strings/Regex/RegexPair.cs b/src/Mnemonic.Strings/Regex/RegexPair.cs index 9e5f324..95ed5a0 100644 --- a/src/Mnemonic.Strings/Regex/RegexPair.cs +++ b/src/Mnemonic.Strings/Regex/RegexPair.cs @@ -8,14 +8,16 @@ public sealed record RegexPair { public System.Text.RegularExpressions.Regex Regex { get; private set; } public string Replacement { get; private set; } + public int Count { get; private set; } - public RegexPair(string pattern, string replacement, RegexOptions? options = null) + public RegexPair(string pattern, string replacement, int count = 1, RegexOptions? options = null) { Regex = new System.Text.RegularExpressions.Regex( - RegexHelpers.BuildRegexExactPhrasePattern(pattern), + RegexHelpers.BuildRegexSubstringPattern(pattern), options ?? RegexOptions.Singleline); Replacement = replacement; + Count = count; } public bool IsMatch(ReadOnlySpan input) @@ -25,6 +27,6 @@ public bool IsMatch(ReadOnlySpan input) public string Replace(string input) { - return Regex.Replace(input, Replacement); + return Regex.Replace(input, Replacement, Count); } } diff --git a/src/Mnemonic.Utilities/Helpers/RegexHelpers.cs b/src/Mnemonic.Utilities/Helpers/RegexHelpers.cs index 49b89c9..d483f7e 100644 --- a/src/Mnemonic.Utilities/Helpers/RegexHelpers.cs +++ b/src/Mnemonic.Utilities/Helpers/RegexHelpers.cs @@ -4,6 +4,11 @@ namespace Mnemonic.Utilities.Helpers; public static class RegexHelpers { + public static string BuildRegexSubstringPattern(string input) + { + return Regex.Escape(input); + } + private static readonly string _exactMatchTemplate = "^{0}$"; public static string BuildRegexExactPhrasePattern(string input)