Korzystanie z wyrażeń regularnych

Elixir:
Korzystanie z wyrażeń regularnych

Jak to zrobić:

Elixir używa modułu Regex, wykorzystując bibliotekę regex Erlanga, do operacji z regex. Oto podstawowe zastosowania:

# Dopasowywanie wzorca - Zwraca pierwsze dopasowanie
match_result = Regex.run(~r/hello/, "hello world")
IO.inspect(match_result) # Wynik: ["hello"]

# Znajdowanie wszystkich dopasowań
all_matches = Regex.scan(~r/\d/, "There are 2 apples and 5 oranges.")
IO.inspect(all_matches) # Wynik: [["2"], ["5"]]

# Zastępowanie części ciągu znaków
replaced_string = Regex.replace(~r/\s+/, "Elixir is fun", "_")
IO.inspect(replaced_string) # Wynik: "Elixir_is_fun"

Dla bardziej skomplikowanych wzorców i funkcjonalności, możesz rozważyć użycie bibliotek stron trzecich, chociaż dla większości podstawowych zadań związanych z ciągami znaków i dopasowywaniem wzorców, wbudowany moduł Regex w Elixirze jest dość potężny.

Aby wykonać dopasowanie niezależne od wielkości liter, użyj opcji i:

case_insensitive_match = Regex.run(~r/hello/i, "Hello World")
IO.inspect(case_insensitive_match) # Wynik: ["Hello"]

Wyrażenia regularne mogą być prekompilowane dla efektywności podczas wielokrotnego używania:

precompiled_regex = Regex.compile!("hello")
match_result_precompiled = Regex.run(precompiled_regex, "hello world")
IO.inspect(match_result_precompiled) # Wynik: ["hello"]

Elixir wspiera również nazwane grupy ujęć, które mogą być bardzo przydatne do ekstrakcji określonych części ciągu znaków, jednocześnie czyniąc kod bardziej zrozumiałym:

date_string = "2023-04-15"
pattern = ~r/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/
{:ok, captures} = Regex.run(pattern, date_string, capture: :all_names)
IO.inspect(captures) # Wynik: %{"year" => "2023", "month" => "04", "day" => "15"}

Ten krótki przegląd podkreśla łatwość, z jaką Elixir obsługuje wyrażenia regularne, umożliwiając potężne techniki manipulacji ciągami znaków i ekstrakcji danych.