⊗ppPmRgNPB 252 of 447 menu

Icke-fångande parenteser i PHP regex

Parenteser () har två funktioner - gruppering av tecken och fångstfunktion. Men vad gör man om man vill gruppera, men inte fånga? För att lösa detta problem har speciella icke-fångande parenteser (?: ) skapats - de grupperar, men fångar inte.

Exempel

I följande exempel behöver vi den första parentesen för gruppering, och den andra - för fångst. Men båda parenteserna fångar data:

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

Som ett resultat kommer våra fångster att innehålla följande:

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

Exempel

Låt oss göra så att det första parentesparet endast grupperar, men inte fångar:

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

Som ett resultat kommer vårt nummer att finnas i den första fångsten:

<?php var_dump($res[1]); // kommer att skriva ut '123' ?>

Praktiska uppgifter

Det finns delsträngar, uppdelade i två delar av ett godtyckligt antal par $@:

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

Hitta varje sådan delsträng och för varje hittad delsträng, lägg i den första fångsten vad som står före avgränsaren, och i den andra fångsten - vad som står efter avgränsaren.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa