From f630e8bc715d758dfe9dd18779c83b0b7702597a Mon Sep 17 00:00:00 2001 From: Tristan Hyams Date: Fri, 24 Nov 2023 10:55:43 -0600 Subject: [PATCH] Regex patch. --- src/Mnemonic.Strings/Regex/RegexPair.cs | 8 +++++--- src/Mnemonic.Utilities/Helpers/RegexHelpers.cs | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) 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)