Priešingo žvilgsnio reguliariosios išraiškos PHP

Kartais reikia išspręsti tokio tipo uždavinį: rasti eilutę 'aaa' ir pakeisti ją į '!', bet tik jei po 'aaa' yra 'x', o pats 'x' tuo pačiu nepakeisti. Jei bandysime išspręsti uždavinį 'tiesiogiai', mums nepavyks:

php<?php
  preg_replace('#aaax#', '!', 'aaax'); // bus '!', o turi būti '!x'
?>

Uždaviniui išspręsti reikia būdo pasakyti, kad 'x' neturėtų būti pakeistas. Tai daroma naudojant specialiuosius skliaustus (?= ), kurie tik žiūri, bet nepasigamina.

Šie skliaustai vadinami teigiamu priešingu žvilgsniu forward. Teigiamas - kadangi 'x' (mūsų atveju) turi būti - tik tada įvyks pakeitimas.

Panaudokime šiuos skliaustus mūsų uždaviniui išspręsti:

php<?php
  preg_replace('#aaa(?=x)#', '!', 'aaax'); // grąžins '!x'
?>

Yra ir neigiamas priešingas žvilgsnis forward - (?! ) - jis, atvirkščiai, sako, kad kažko turi nebūti. Šiame pavyzdyje pakeitimas įvyks, tik jei po 'aaa' nėra 'x':

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

Duota eilutė, kurioje yra funkcijų pavadinimai:

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

Gaukite funkcijų pavadinimų masyvą iš eilutės.

Задание 2

Duota eilutė su tagu:

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

Gaukite šio tago atributų pavadinimų masyvą.