⊗ppPmRgNPB 252 of 447 menu

Ikke-fangende parenteser i PHP regex

Parenteser () utfører to funksjoner - gruppering av tegn og fangstfunksjon. Men hva gjør vi hvis vi trenger å gruppere, uten å fange? For å løse dette problemet er det spesielle ikke-fangende parenteser (?: ) utviklet - de grupperer, men fanger ikke.

Eksempel

I det følgende eksemplet trenger vi de første parentesene for gruppering, og de andre - for fangst. Imidlertid fanger begge typer parenteser data i fangstgrupper:

<?php $str = 'abab123'; $reg = '#(ab)+([1-9]+)#'; preg_match_all($reg, $str, $res); ?>

Som et resultat vil følgende være i våre fangstgrupper:

<?php var_dump($res[0]); // vil skrive ut 'abab123' var_dump($res[1]); // vil skrive ut 'ab' var_dump($res[2]); // vil skrive ut '123' ?>

Eksempel

La oss gjøre slik at det første paret med parenteser bare grupperer, men ikke fanger:

<?php $str = 'abab123'; $reg = '#(?:ab)+([1-9]+)#'; preg_match_all($reg, $str, $res); ?>

Som et resultat vil tallet vårt være i den første fangstgruppen:

<?php var_dump($res[1]); // vil skrive ut '123' ?>

Praktiske oppgaver

Gitt delstrenger, delt inn i to deler av et vilkårlig antall par med $@:

<?php $str = 'aaa$@bbb aaa$@$@bbb aaa$@$@$@bbb'; ?>

Finn hver av slike delstrenger og for hver funnet delstreng, plasser i den første fangstgruppen det som står før skilletegnet, og i den andre fangstgruppen - det som står etter skilletegnet.

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