⊗ppPmRgNPB 252 of 447 menu

Ei-capture-sulkeet PHP:n säännöllisissä lausekkeissa

Sulkeet () suorittavat kaksi tehtävää - merkkien ryhmittely ja capturen tehtävä. Mutta mitä tehdä, jos haluamme ryhmitellä, mutta emme tallentaa captureen? Tämän ongelman ratkaisemiseksi on keksitty erityiset ei-capture-sulkeet (?: ) - ne ryhmittelevät, mutta eivät tallenna captureen.

Esimerkki

Seuraavassa esimerkissä ensimmäiset sulkeet tarvitsemme ryhmittelyyn, ja toiset - captureen. Kuitenkin sekä nämä että nuo sulkeet tallentavat tiedot captureen:

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

Tuloksena captureissamme on seuraavaa:

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

Esimerkki

Tehdään niin, että ensimmäinen sulkepari vain ryhmittelee, mutta ei tallenna captureen:

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

Tuloksena ensimmäisessä capturessa on numeromme:

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

Käytännön tehtävät

Annettu alimerkkijonoja, jaettu kahteen osaan mielivaltaisella määrällä $@ -pareja:

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

Etsi jokainen tällainen alimerkkijono ja jokaiselle löydetylle alimerkkijonolle aseta ensimmäiseen captureen se, mikä on ennen erotinta, ja toiseen captureen - se, mikä on erottimen jälkeen.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää