Kutazama Mbele katika Regular PHP

Wakati mwingine inahitajika kutatua tatizo la aina hii: pata msururu 'aaa' na uibadilishe kuwa '!', lakini tu ikiwa baada ya 'aaa' kuna 'x', na 'x' yenyewe isibadilishwe. Kama tutajaribu kutatua tatizo hilo 'moja kwa moja', hatitafanikiwa:

php<?php
  preg_replace('#aaax#', '!', 'aaax'); // itakuwa '!', lakini inapaswa kuwa '!x'
?>

Ili kutatua tatizo, unahitaji njia ya kusema kwamba 'x' haipaswi kubadilishwa. Hii inafanywa kwa kutumia mabano maalum (?= ), ambayo hutazama tu, lakini haichukui pamoja nayo.

Mabano haya yanaitwa kutazama mbele chanya . Chanya - kwa sababu 'x' (katika kesi yetu) inapaswa kuwepo - ndio tu badilisha litakalofanyika.

Wacha tutumie mabano haya kutatua tatizo letu:

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

Kuna pia kutazama mbele hasi - (?! ) - hii, kinyume chake, inasema kwamba kitu fulani hakipaswi kuwepo. Katika mfano ufuatao badilisha litatokea, tu ikiwa baada ya 'aaa' hakuna 'x':

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

Kuna msururu ulio na majina ya vitendaji:

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

Pata safu ya majina ya vitendaji kutoka kwenye msururu.

Задание 2

Kuna msururu wenye kitambulishi:

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

Pata safu ya majina ya sifa za kitambulishi hiki.