Raku kurss / Regulārās izteiksmes un gramatikas / Regulārās izteiksmes / Tvērumi

Pozicionālie tvērumi

Ielieciet raksturā daļu apaļajās iekavās ( ), lai to satvertu. Pēc veiksmīgas sakritības katrs satvertais gabals ir pieejams kā $0, $1 un tā tālāk, numurēts no nulles tādā secībā, kādā iekavas atveras:

if '2025-06' ~~ / (\d+) '-' (\d+) / {
    say $0; # 「2025」
    say $1; # 「06」
}

Pirmais iekavu pāris satvēra gadu $0, otrais satvēra mēnesi $1. Teksts starp tiem — burtiskais - — tiek piemeklēts, bet ne satverts.

Katrs tvērums pats ir mazs sakritības objekts, tāpēc tam var prasīt .Str, tā pozīciju un tā tālāk. Virknē ar dubultpēdiņām tvērums interpolējas kā tā sakritušais teksts:

if 'hello world' ~~ / (\w+) ' ' (\w+) / {
    say "$1 $0"; # world hello
}

Šeit abi satvertie vārdi tiek izdrukāti pretējā secībā, kas tos samaina vietām.

Tvērumi glabājas arī sakritības mainīgajā $/, un $0 patiesībā ir īss veids, kā uzrakstīt $/[0]. Varat strādāt tieši caur $/:

if '2025-06' ~~ / (\d+) '-' (\d+) / {
    say $/[0];    # 「2025」
    say $/[1];    # 「06」
    say $/.elems; # 2
}

$/ ir viss sakritības objekts, tā indeksēšana sasniedz pozicionālos tvērumus, un .elems pasaka, cik to ir.

Prakse

Jūs gaida 1 viktorīna par šī temata saturu.

Kursa navigācija

Tvērumi   |   Viktorīna — Pozicionālie tvērumi


💪 Vai arī dodieties tieši uz šīs sadaļas vingrinājumiem.