Shikimi Përpara në Regex të PHP

Ndonjëherë duhet zgjidhur një detyrë të këtij lloji: gjeni vargun 'aaa' dhe zëvendësojeni atë me '!', por vetëm nëse pas 'aaa' ndodhet 'x', kurse vetë 'x' mos e zëvendësoni. Nëse përpiqemi ta zgjidhim detyrën 'drejtpërdrejt', nuk do të dalë:

php<?php
  preg_replace('#aaax#', '!', 'aaax'); // do të jetë '!', kurse duhet '!x'
?>

Për të zgjidhur detyrën nevojitet një mënyrë për të thënë, që 'x' nuk duhet të zëvendësohet. Kjo bëhet me ndihmën e kllapave speciale (?= ), të cilat thjesht shikojnë, por nuk e marrin me vete.

Këto kllapa quhen shikim pozitiv përpara. Pozitiv - sepse 'x' (në rastin tonë) duhet të jetë - vetëm atëherë do të ndodhë zëvendësimi.

Le të përdorim këto kllapa për të zgjidhur detyrën tonë:

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

Ekziston edhe shikim negativ përpara - (?! ) - ai, përkundrazi, thotë se diçka nuk duhet të jetë. Në shembullin vijues zëvendësimi do të ndodhë, vetëm nëse pas 'aaa' nuk ndodhet 'x':

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

Jepet një varg që përmban emra funksionesh:

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

Merrni një varg emrash funksionesh nga vargu.

Задание 2

Jepet një varg me një tag:

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

Merrni një varg emrash atributesh të këtij tagu.