Regulaaravaldiste eesvaade PHP-s

Mõnikord on vaja lahendada sellist tüüpi ülesannet: leida string 'aaa' ja asendada see '!'-ga, ainult siis, kui pärast 'aaa' on 'x', kuid 'x' ennast ei asendata. Kui püüame ülesannet lahendada 'otse', siis meil ei õnnestu:

php<?php
  preg_replace('#aaax#', '!', 'aaax'); // saab '!', aga peaks olema '!x'
?>

Ülesande lahendamiseks on vaja võimalust öelda, et 'x' ei tohiks asendada. Seda tehakse spetsiaalsete sulgude (?= ) abil, mis lihtsalt vaatavad, kuid ei võta endaga kaasa.

Neid sulgusid nimetatakse positiivseks eesvaateks ettepoole. Positiivne - kuna 'x' (meie puhul) peab olema - alles siis toimub asendamine.

Rakendame neid sulgusid meie ülesande lahendamiseks:

php<?php
  preg_replace('#aaa(?=x)#', '!', 'aaax'); // tagastab '!x'
?>

On olemas ka negatiivne eesvaade ettepoole - (?! ) - see, vastupidi, ütleb, et midagi ei peaks olema. Järgmises näites toimub asendamine ainult siis, kui pärast 'aaa' ei ole 'x':

php<?php
  preg_replace('#aaa(?!x)#', '!', 'aaab'); // tagastab '!b'
?>
Задание 1

Antud string, mis sisaldab funktsioonide nimesid:

php<?php
  $str = 'func1() func2() func3()';
?>

Hankige stringist funktsioonide nimede massiiv.

Задание 2

Antud string siltiga:

php<?php
  $str = '<a href="" class="eee" id="zzz">';
?>

Hankige selle sildi atribuutide nimede massiiv.