PHP-də requlyar ifadələrdə irəli baxış

Bəzən bu tip məsələni həll etmək lazım gəlir: sətiri 'aaa' tap və onu '!' ilə əvəz et, lakin yalnız 'aaa'-dən sonra 'x' gəlirsə, özü 'x' isə əvəz edilməməlidir. Əgər biz məsələni 'birbaşa' həll etməyə çalışsaq, heç nə alınmayacaq:

php<?php
  preg_replace('#aaax#', '!', 'aaax'); // alınacaq '!', lazımdır '!x'
?>

Məsələni həll etmək üçün, demək lazımdır ki, 'x' əvəz edilməməlidir. Bu, xüsusi mötərizələr (?= ) ilə edilir, onlar yalnız baxır, lakin özləri ilə götürmürlər.

Bu mötərizələr müsbət irəli baxış adlanır. Müsbət - çünki 'x' (bizim vəziyyətimizdə) olmalıdır - yalnız o zaman əvəzetmə baş verəcək.

Gəlin bu mötərizələri bizim məsələni həll etmək üçün tətbiq edək:

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

Həm də mənfi irəli baxış var - (?! ) - o, əksinə, deyir ki, nə isə olmamalıdır. Aşağıdakı nümunədə əvəzetmə yalnız 'aaa'-dən sonra 'x' olmadıqda baş verəcək:

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

Funksiya adlarını ehtiva edən sətir verilmişdir:

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

Sətirdən funksiya adlarının massivini alın.

Задание 2

Teq ilə sətir verilmişdir:

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

Bu tegin atribut adlarının massivini alın.