⊗ppPmRgEP 254 of 447 menu

Grupper i regulære uttrykk i PHP

Innholdet i grupper er tilgjengelig ikke bare i erstatningsstrengen, men også i selve det regulære uttrykket: vi kan legge noe i en gruppe, og deretter direkte i det regulære uttrykket si at innholdet av denne gruppen skal stå her.

Innholdet i grupper er tilgjengelig via deres numre, med et bakovervendt skråstreng foran. For eksempel, gruppe null vil være tilgjengelig slik: \0, første gruppe slik - \1, andre - \2 og så videre.

Jeg er sikker på at alt skrevet ovenfor foreløpig er ganske uklart for deg. Dette er ikke overraskende, ettersom grupper er det mest vanskelige å forstå i regulære uttrykk. La oss gå gjennom det med eksempler.

Eksempel

La oss si at vi har en streng som denne:

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

La oss finne alle stedene i den hvor det står to like bokstaver etter hverandre. For å løse oppgaven vil vi søke etter en hvilken som helst bokstav, legge den i en gruppe, og deretter sjekke om neste symbol er innholdet i denne gruppen:

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

Resultatet som skrives til variabelen blir følgende:

'! ! cd ef'

Eksempel

La oss si at vi har en streng som denne:

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

La oss finne alle ordene i den hvor den første og siste bokstaven er like. For å løse oppgaven skriver vi følgende mønster: bokstav, deretter en eller flere bokstaver til, og deretter samme bokstav som den første:

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

Resultatet som skrives til variabelen blir 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øllparenteser kan man angi negative tall. I dette tilfellet vil gruppene telles fra slutten:

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

Praktiske oppgaver

Gitt en streng:

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

Finn alle delstrenger som har tre like bokstaver etter hverandre.

Gitt en streng:

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

Finn alle delstrenger som har to eller flere like bokstaver etter hverandre.

Gitt en streng:

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

Finn alle delstrenger som har to like ord etter hverandre.

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