Säännöllisten lausekkeiden käyttö

Elixir:
Säännöllisten lausekkeiden käyttö

Kuinka:

Elixir käyttää Regex-moduulia, hyödyntäen Erlangin regex-kirjastoa, regex-operaatioihin. Tässä peruskäyttötapoja:

# Mallin täsmääminen - Palauttaa ensimmäisen osuman
match_result = Regex.run(~r/hello/, "hello world")
IO.inspect(match_result) # Tuloste: ["hello"]

# Kaikkien osumien löytäminen
all_matches = Regex.scan(~r/\d/, "There are 2 apples and 5 oranges.")
IO.inspect(all_matches) # Tuloste: [["2"], ["5"]]

# Merkkijonon osien korvaaminen
replaced_string = Regex.replace(~r/\s+/, "Elixir on kivaa", "_")
IO.inspect(replaced_string) # Tuloste: "Elixir_on_kivaa"

Monimutkaisempia malleja ja toiminnallisuuksia varten saatat harkita kolmannen osapuolen kirjastojen käyttöä, mutta useimpiin ydinteksti- ja mallintäsmäystehtäviin Elixiriin sisäänrakennettu Regex-moduuli on varsin tehokas.

Sukupuolineutraaliin täsmäykseen käytä i-vaihtoehtoa:

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

Regex-lausekkeet voidaan esikääntää tehokkuuden lisäämiseksi, kun niitä käytetään useita kertoja:

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

Elixir tukee myös nimettyjä kaappauksia, jotka voivat olla erittäin käteviä tiettyjen merkkijonojen osien poimintaan samalla, kun teet koodistasi luettavampaa:

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) # Tuloste: %{"year" => "2023", "month" => "04", "day" => "15"}

Tämä lyhyt yleiskatsaus korostaa sitä, kuinka vaivattomasti Elixir käsittelee säännöllisiä lausekkeita, mahdollistaen tehokkaat merkkijonojen manipulointi- ja datanpoimintatekniikat.