var bloodBrothers = new string[] { "And if you're taking a walk through the garden of life", "What do you think you'd expect you would see?", "Just like a mirror reflecting the moves of your life", "And in the river reflections of me", "Just for a second a glimpse of my father I see ", "And in a movement he beckons to me", "And in a moment the memories are all that remain", "And all the wounds are reopening again" }; var pattern = "and"; foreach (var s in bloodBrothers) { if(System.Text.RegularExpressions.Regex.IsMatch(s, pattern, RegexOptions.IgnoreCase)) { Console.WriteLine(s); } }
Wszystkie stringi rozpoczynające się od danego ciągu znaków:
pattern = "^(And in a).*";
Wszystkie stringi kończące się na danym ciągu znaków:
pattern = "life$";
Wyrazy dłuższe niż 10 znaków:
pattern = "[A-Z|a-z]{10,}";
Numery telefonu, oddzielone znakiem "-" rozpoczynające się od 3 cyfr a kończące na czterech ([0-9] i \d są równoważne)
pattern = "^([0-9]{3})-.*-\\d{4}$";
Trzy takie same cyfry (nawiasy oznaczają grupę,do której następnie odwołujemy się poprzez \1 z krotnością 2, pytajnik oznacza opcjonalność danego znaku)
pattern = "-?(\\d)(\\1){2}-";
Negacja - wszystkie linie nie zaczynające się od A
pattern = "^[^A]";
Skróty znakowe:
Białe spacje i granice wyrazu:
pattern = "\\bdo\\b\\s\\byou\\b";
Case - insensitive z poziomu wzorca:
pattern = "(?i)what";
Linie zakończone pytajnikiem (przy użyciu Unicode)
pattern = "\\u003F$";
Kwantyfikatory:
Lookaheads i lookbehinds:
pattern = "(?=[a-z]{2} life).{2}";
Pattern taki poszuka wszystkich dwuliterowych napisów, po których w dowolnym miejscu w tekście występuje słowo life. Wzorzec ma zerową długość, a więc ostatnia instrukcja {2} oznacza, że wybrane zostaną właśnie te dwuliterowe wyrazy. Pozostałe możliwości to:
- ?! - negative lookahead
- ?<= - lookbehind
- ?<! - negative lookbehind
Brak komentarzy:
Prześlij komentarz