Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
regex: rozważania nad powielaniem grup za pomocą kwantyfikatora
//Title of this code //Rextester.Program.Main is the entry point for your code. Don't change it. using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; namespace Rextester { public class Program { public static void Main(string[] args) { string txt = "1.Ala ma kota a kot ma Alę.\r\n2.Ala ma dwa koty a koty mają Alę.\r\n3.Ali przygląda się kotu a kot jej nie.\r\n4.Ala woła: \"kotku\" a kot śpi.\r\n"; string reg = @" (?> \d #początkowa cyfra .*? (kot.*?\b) #grupa nienazwana (wyszukuje kota w odmianie) .*? (?<kot>kot.*?\b) #grupa nazwana 'kot' .*? (?>\r\n|$) #enter lub koniec stringa )+ #gruoa obejmująca całą linię, którą chcemy powtarzać dowolną ilość razy "; Regex r = new Regex(reg,RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline); Match m = r.Match(txt); Console.WriteLine("wg standardu REGEX grupy które są są powielone kwantyfikatorem zawierają jedynie OSTATNIE trafienie:"); foreach(var a in r.GetGroupNames()) Console.WriteLine(string.Format("grupa \"{0}\":\r\n{1}",a,m.Groups[a])); Console.WriteLine("\r\nw .NET dostępne są jednak wszystkie trafienia jakie grupa napotkała:"); foreach(var a in r.GetGroupNames()) { Console.WriteLine(string.Format("grupa \"{0}\":\r\n{1}",a,m.Groups[a])); if(m.Groups[a].Captures.Count>1) Console.WriteLine(string.Format("poprzednie trafienia: {0}",m.Groups[a].Captures.Cast<Capture>().Select(x=>x.Value).Aggregate((x,y)=>x+", "+y))); } //tylko grupy nienazwane } } }
run
|
edit
|
history
|
help
0
DAY !
Recursive 3
Unix time stamp
C++
SevenSevenSeven
Pizzas&Tuples&Golden-Medal
My C# (2)
Tarkov Time
Floating point arithmetics
temp_with_pow