<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/reference.pcre.pattern.syntax.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'regexp.reference.assertions.php',
    1 => 'Tezler',
    2 => 'Tezler',
  ),
  'up' => 
  array (
    0 => 'reference.pcre.pattern.syntax.php',
    1 => 'Şablon S&ouml;zdizimi',
  ),
  'prev' => 
  array (
    0 => 'regexp.reference.back-references.php',
    1 => 'Geriye G&ouml;nderimler',
  ),
  'next' => 
  array (
    0 => 'regexp.reference.onlyonce.php',
    1 => 'Sadece bir kerelik alt şablonlar',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'reference/pcre/pattern.syntax.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="regexp.reference.assertions" class="section">
  <h2 class="title">Tezler</h2>
  <p class="para">
   Bir tez, herhangi bir karakterin tüketilmediği bir eşleşme noktasının
   öncesinde veya sonrasındaki karakterler üzerinde yapılacak bir sınama
   belirtir. Basit savlar <a href="regexp.reference.escape.php" class="link">önceleme
   karakteri</a> altında açıklandığı gibi \b,
   \B,  \A,  \Z,  \z, ^ ve $ olarak kodlanabilir. Birden fazla alt
   şablondan oluşan daha karmaşık savlar da düzenlenebilir. Bunların iki
   çeşidi vardır: Eşleşmeye konu dizge içinde geçerli konumun
   <em>öncesine bakanlar</em> ve <em>sonrasına
   bakanlar</em>.
  </p>
  <p class="para">
   Bir tez alt şablonu, eşleşme noktasının değişmesine sebep olmadığı
   takdirde normal yollarla eşleşecektir. Eşleşme noktasının
   <em>sonrasına bakan</em> tezler, olumlu savlar için  (?=
   ile, olumsuz savlar için ise (?! ile başlar. Örneğin,
   <code class="literal">\w+(?=;)</code> şablonu, ardına bir noktalı virgül konmuş
   bir sözcükle eşleşecek, ancak ardında noktalı virgül bulunmayan bir
   sözcükle eşleşmeyecektir. <code class="literal">foo(?!bar)</code> şablonu ardında
   &quot;bar&quot; bulunmayan herhangi bir &quot;foo&quot; ile eşleşecektir. Ancak, benzer
   şekilde, <code class="literal">(?!foo)bar</code> şablonu, öncesinde &quot;foo&quot; dışında
   bir dizge bulunan bir &quot;bar&quot; dizgesini bulamayacak; buna karşın,
   öncesinde hiçbir şey bulunmayan, ilk &quot;bar&quot; dizgesini bulacaktır. Çünkü
   (?!foo) savı, sonraki üç karakter &quot;bar&quot; olduğu takdirde daima doğru
   olacaktır. Bu etkiyi geriye bakan bir savla da sağlamak mümkündür.
  </p>
  <p class="para">
   Eşleşme noktasının <em>öncesine bakan</em> tezler, olumlu
   savlar için (?&lt;= ile, olumsuz savlar için ise (?&lt;! ile başlar.
   Örneğin, <code class="literal">(?&lt;!foo)bar</code> şablonu öncesinde &quot;foo&quot;
   bulunmayan bir &quot;bar&quot; dizgesiyle eşleşecektir. Geriye bakan bir savın
   içeriğinin eşleşeceği dizgenin sabit uzunlukta olması gerekir.
   <code class="literal">(?&lt;=bullock|donkey)</code> şablonu bu kurala uyarken
   <code class="literal">(?&lt;!dogs?|cats?)</code> şablonu, derleme sırasında
   hataya sebep olur. Farklı uzunlukta dizgelerle eşleşen geriye bakan
   şablonlara sadece olasılıkların belirtildiği alt şablonun dışında izin
   verilir. Bu kural, tüm olasılıkların aynı uzunlukta dizge ile
   eşleşmesini gerektiren Perl 5.005 sürümünden farklıdır. Örneğin,
   <code class="literal">(?&lt;=ab(c|de))</code> savına Perl 5.005 sürümünde izin
   verilmez, çünkü üst seviye olasılıklar farklı uzunlukta dizgelerden
   oluşur. Ancak, şablon,  <code class="literal">(?&lt;=abc|abde)</code> örneğindeki
   gibi iki ayrı olasılığa bölünürse sorun çıkmaz. Geriye bakan savların
   gerçekleniminde, her olasılık için, geçici olarak belli bir uzunlukta
   geriye gidilip eşleşme denenir. Eğer, eşleşme noktasının öncesinde
   yeteri sayıda karakter yoksa eşleşme ister istemez başarısız olur.
   Geriye bakan savlar, dizge sonlarıyla eşleşmede, sadece bir kere
   eşleşen alt şablonlarla birlikte kullanıldığında oldukça yararlıdır.
   Böyle, sadece bir kere eşleşen alt şablon örneklerini
   Sadece bir kerelik alt şablonlar bölümünde bulabilirsiniz.
  </p>
  <p class="para">
   Başarılı bir eşleşmede birden fazla sav bulunabilir. Örneğin,
   <code class="literal">(?&lt;=\d{3})(?&lt;!999)foo</code> şablonu, öncesindeki üç
   rakam &quot;999&quot; olmayan bir &quot;foo&quot; dizgesiyle eşleşecektir. Farkettiğiniz
   gibi, her sav, eşleşmeye konu dizge içinde hep aynı noktaya bağımsız
   olarak uygulanır. Yapılan ilk şey, önceki üç karakterin birer rakam olup
   olmadığıdır. Ancak bundan sonra o üç rakamın &quot;999&quot; olup olmadığına
   bakılır. Bu şablon, &quot;foo&quot; dizgesinin önündeki, ilk üç karakteri rakam
   olan ve son üç karakteri &quot;999&quot; olmayan altı karakterle eşleşmez.
   Örneğin, &quot;123abcfoo&quot; dizgesiyle eşleşme sağlanamayacaktır. İstenen
   eşleşmeyi sağlamak için şablonun
   <code class="literal">(?&lt;=\d{3}...)(?&lt;!999)foo</code> olarak düzenlenmesi
   gerekir.
  </p>
  <p class="para">
   İlk sav için önce, &quot;foo&quot; dizgesini önceleyen altı karakterin ilk üçünün
   rakam olup olmadığına bakılır. Sonra ikinci sav için altılının son üç
   karakterinin &quot;999&quot; olup olmadığına bakılır.
  </p>
  <p class="para">
   Savlar çeşitli birleşimler oluşturacak şekilde iç içe düzenlenebilir.
   Örneğin, <code class="literal">(?&lt;=(?&lt;!foo)bar)baz</code> şablonu öncesinde
   &quot;foo&quot; ile öncelenmemiş &quot;bar&quot; dizgeleri bulunan &quot;baz&quot; dizgeleriyle
   eşleşir. <code class="literal">(?&lt;=\d{3}...(?&lt;!999))foo</code> şablonu ise,
   öncesinde 3 rakam ile öncelenmiş &quot;999&quot; içermeyen üç karakter bulunan
   &quot;foo&quot; dizgeleriyle eşleşecektir.
  </p>
  <p class="para">
   Aynı savı bir kereden fazla kanıtlamanın bir anlamı olmadığından, sav
   alt şablonları, yinelenemeyecekleri gibi yakalayan alt şablonlar da
   olamazlar.  Sav alt şablonların içerdiği yakalayan alt
   şablonlar, ana şablonun tümüne ait yakalayan alt şablonlar olarak
   değerlendirilirler. Bununla birlikte, bu çeşit yakalayan alt şablonlar
   sadece olumlu savlarda dışa taşınırlar, çünkü olumsuz savlarda dışa
   taşınacak bir şey olmaz.
  </p>
  <p class="para">
   Savlar en fazla 200 yaylı ayraçlı alt şablon içerebilir.
  </p>
 </div><?php manual_footer($setup); ?>