using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?:(?:[\s-]*\d{2}-\d{2}-\d{4})+)?\s*(?<amount>-*\d+,\d+)\s*$";
string input = @" 31-12-2019 Forfait 01-01-2019 - 31-12-2019 -29,00
31-12-2019Forfait 01-01-2019 - 31-12-201950,00
31-12-2019Mercedes-500,00
31-12-2019Client10 700,00
31-12-2019Comptoir17 50,00
// edge cases
31-12-2019Client 10700,00
31-12-2019Client 10-700,00
31-12-2019Client 10 700,00
31-12-2019Comptoir 1750,00
31-12-2019Comptoir 17-50,00
31-12-2019Comptoir 17 50,00
// versions related to [https://regex101.com/r/7TdghZ/1] ...
^\s*(?<date>\d{2}-\d{2}-\d{4})\s*(?<text>[^\s-]+(?:(?:[\s-]*\d{2}-\d{2}-\d{4})+)?)\s*(?<amount>-*\d+,\d+)
(?<date>\d{2}-\d{2}-\d{4})\s*(?<text>[^\s-]+(?:(?:[\s-]*\d{2}-\d{2}-\d{4})+)?)\s*(?<amount>-*\d+,\d+)\s*$
// final version
(?:(?:[\s-]*\d{2}-\d{2}-\d{4})+)?\s*(?<amount>-*\d+,\d+)\s*$
";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
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