⊗ppPmRgEP 254 of 447 menu

Lommer i regulære udtryk i PHP

Indholdet af lommer er tilgængeligt ikke kun i erstatningsstrengen, men også i selve det regulære udtryk: vi kan lægge noget i en lomme, og derefter direkte i det regulære udtryk sige, at her skal stå indholdet af denne lomme.

Indholdet af lommer er tilgængeligt via deres numre, hvortil der står et omvendt skråstreg. For eksempel, vil den nulte lomme være tilgængelig sådan her: \0, den første lomme sådan her - \1, den anden - \2 og så videre.

Jeg er sikker på, at alt hvad der er skrevet ovenfor indtil videre er ret utydeligt for dig. Det er ikke overraskende, da lommer er det mest uforståelige sted i regulære udtryk. Lad os se på det med eksempler.

Eksempel

Lad os sige, at vi har en streng som denne:

<?php $str = 'aa bb cd ef'; ?>

Lad os finde alle steder i den, hvor der står to ens bogstaver i træk. For at løse opgaven vil vi søge efter ethvert bogstav, lægge det i en lomme, og derefter kontrollere, om det næste tegn er indholdet af denne lomme:

<?php $res = preg_replace('#([a-z])\1#', '!', $str); ?>

Resultatet i variablen vil være følgende:

'! ! cd ef'

Eksempel

Lad os sige, at vi har en streng som denne:

<?php $str = 'asxca buzxb csgd'; ?>

Lad os finde alle ord i den, hvor det første og sidste bogstav er ens. For at løse opgaven skriver vi følgende mønster: bogstav, derefter et eller flere bogstaver mere, og derefter det samme bogstav som det første:

<?php $res = preg_replace('#([a-z])[a-z]+\1#', '!', $str); ?>

Resultatet i variablen vil være følgende:

'! ! csgd'

Eksempel

I stedet for \1 kan man skrive \g1:

<?php $res = preg_replace('#([a-z])[a-z]+\g1#', '!', $str); ?>

Eksempel

Man kan også skrive \g{1}:

<?php $res = preg_replace('#([a-z])[a-z]+\g{1}#', '!', $str); ?>

Eksempel

I krøllede parenteser kan man angive negative tal. I dette tilfælde vil lommerne tælles fra slutningen:

<?php $res = preg_replace('#([a-z])([a-z])\g{-2}#', '!', $str); ?>

Praktiske opgaver

Givet en streng:

<?php $str = 'aaa bbb ccc xyz'; ?>

Find alle delstrenge, hvor der er tre ens bogstaver i træk.

Givet en streng:

<?php $str = 'a aa aaa abab bbbb'; ?>

Find alle delstrenge, hvor der er to eller flere ens bogstaver i træk.

Givet en streng:

<?php $str = 'aaa aaa bbb bbb ccc ddd'; ?>

Find alle delstrenge, hvor der er to ens ord i træk.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis