Kurso de Raku / Regulesprimoj kaj gramatikoj / Regulesprimoj / Literaloj kaj signoklasoj

Kongruigi laŭliteran tekston

La plej simpla ŝablono estas sekvenco de literoj kaj ciferoj. Tia ŝablono kongruas ekzakte kun tiuj signoj, en tiu ordo, ie ajn en la ĉeno:

say 'the cat sat' ~~ /cat/; # 「cat」
say 'Hello'       ~~ /ell/; # 「ell」

La kongruo ne devas komenciĝi ĉe la komenco de la ĉeno — la regulesprima motoro serĉas la ŝablonon ĉe ĉiu pozicio, ĝis ĝi trovas ĝin.

Sukcesa kongruo produktas objekton Match. Tiu 「cat」 en la unua ekzemplo estas, kiel tia objekto aspektas presita: say montras Match kiel la tekston, kun kiu ĝi kongruis, envolvitan en la angulaj krampoj 「 」. Se la ŝablono ne ĉeestas, la kongruo anstataŭe malsukcesas: la sagaca kongruigo produktas Nil, nedifinitan valoron, kiu kalkuliĝas kiel malvera en Boolea testo:

say ('the cat sat' ~~ /dog/);       # Nil
say ('the cat sat' ~~ /dog/).Bool;  # False

Ene de regulesprimo, spacoj ne estas signifaj defaŭlte — ili estas tie nur por fari la ŝablonon legebla. Do / ell / kongruas ekzakte kun tio, kun kio /ell/ kongruus; la ĉirkaŭaj spacoj estas simple ignorataj:

say 'Hello' ~~ / ell /; # 「ell」

Ĉar spaco en la ŝablono estas ignorata, kongruigi efektivan spacon postulas citilojn: kion ajn vi metas en citilojn estas kongruigata laŭvorte. Tiu sama citado estas la maniero kongruigi interpunkcian signon, kiu alie havus specialan signifon en regulesprimo:

say 'a b'       ~~ / 'a b' /; # 「a b」
say 'price: $5' ~~ / '$' /;   # 「$」

(Por blankspaco vi ankaŭ povas uzi la klason \s, kiun vi baldaŭ renkontos.)

Kursa navigado

Literaloj kaj signoklasoj   |   Signoklasoj


💪 Aŭ iru rekte al la ekzercoj de ĉi tiu sekcio.