Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Reguláris kifejezés

Az Elixirben a reguláris kifejezés (Regex) is önálló típus. Jelölése ~r{regexp} vagy ~r{regexp}options. A ~r{...} jelölés is szigil, azaz bűvös jelölés; a szigilekről részletek a Kernel dokumentációjában találhatók. A reguláris kifejezés szintaxisa a PCRE (Perl Compatible Regular Expressions, http://www.pcre.org) szerinti.

A Regex.run/2 az első illeszkedést adja vissza, a Regex.scan/2 az összeset, a Regex.split/2 az illeszkedések mentén darabolja a sztringet, a Regex.replace/3 pedig lecseréli az illeszkedő részeket:

iex> Regex.run ~r{[cdr]}, "madárcsicsergés"
["d"]

iex> Regex.scan ~r{[cdr]}, "madárcsicsergés"
[["d"], ["r"], ["c"], ["c"], ["r"]]

iex> Regex.split ~r{[cdr]}, "madárcsicsergés"
["ma", "á", "", "si", "se", "gés"]

iex> Regex.replace ~r{[cdr]}, "madárcsicsergés", "."
"ma.á..si.se.gés"

A regexp után egy vagy több egykarakteres opció állhat:

JelJelentés
fTöbbsoros sztring első sorában kezdődjön az illesztés
iAz illesztés ne különböztesse meg a kis- és nagybetűket
mTöbbsoros sztring esetén a ^ és a $ az egyes sorok elejét és végét jelentse (a \A és \z jelentése változatlanul a sztring eleje és vége)
sA . illeszkedjen az újsor-karakterekre is
UAz egyébként mohó * és + módosítók legyenek lusták, azaz a minta a lehető leghosszabb karaktersorozat helyett a lehető legrövidebbre illeszkedjen
uEngedje meg Unicode-specifikus minták, pl. \p használatát
xEngedje meg a bővített mód használatát: ignorálja a szóköz-jellegű (ún. whitespace) karaktereket és a kommenteket (a # jeltől a sor végéig)

Az alábbi példákban a cs.*s minta cs-vel kezdődő, s-re végződő részt keres. Opció nélkül csak a kisbetűs cs-re illeszkedik, és a mohó .* a lehető leghosszabb részt veszi; az i opcióval a nagybetűs Cs is illeszkedik; az U opcióval a .* lusta lesz, így a legrövidebb illeszkedést kapjuk:

iex> Regex.run ~r{cs.*s}, "Madarak Csicsergése"
["csergés"]

iex> Regex.run ~r{cs.*s}i, "Madarak Csicsergése"
["Csicsergés"]

iex> Regex.run ~r{cs.*s}iU, "Madarak Csicsergése"
["Csics"]

További részletek a Regex modul dokumentációjában találhatók.

Forrás: dp26a-fp2ea.pdf (19–20. dia)