<?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 => 'zh',
  ),
  'this' => 
  array (
    0 => 'regexp.reference.meta.php',
    1 => '元字符',
    2 => '元字符',
  ),
  'up' => 
  array (
    0 => 'reference.pcre.pattern.syntax.php',
    1 => 'PCRE 正则语法',
  ),
  'prev' => 
  array (
    0 => 'regexp.reference.delimiters.php',
    1 => '分隔符',
  ),
  'next' => 
  array (
    0 => 'regexp.reference.escape.php',
    1 => '转义序列(反斜线)',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'zh',
    '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.meta" class="section">
  <h2 class="title">元字符</h2>
  <p class="para">  
  正则表达式的魔力源于它可以在模式中拥有选择和重复的能力。 一些字符被赋予
  特殊的涵义，使其不再单纯的代表自己，模式中的这种有特殊涵义的编码字符
  称为 <em>元字符</em>。
  </p>
  <p class="para">
  共有两种不同的元字符：一种是可以在模式中方括号外任何地方使用的，另外一种
  是需要在方括号内使用的。
  在方括号外使用的元字符如下：


   <table class="doctable table">
    <caption><strong>方括号外的元字符</strong></caption>
    
     <thead>
      <tr>
       <th>元字符</th><th>描述</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>\</td><td>一般用于转义字符</td>
      </tr>

      <tr>
       <td>^</td><td>断言目标的开始位置(或在多行模式下是行首)</td>
      </tr>

      <tr>
       <td>$</td><td>断言目标的结束位置(或在多行模式下是行尾)</td>
      </tr>

      <tr>
       <td>.</td><td>匹配除换行符外的任何字符(默认)</td>
      </tr>

      <tr>
       <td>[</td><td>开始字符类定义</td>
      </tr>

      <tr>
       <td>]</td><td>结束字符类定义</td>
      </tr>

      <tr>
       <td>|</td><td>开始一个可选分支</td>
      </tr>

      <tr>
       <td>(</td><td>子组的开始标记</td>
      </tr>

      <tr>
       <td>)</td><td>子组的结束标记</td>
      </tr>

      <tr>
       <td>?</td><td>作为量词，表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。
       (查阅<a href="regexp.reference.repetition.php" class="link">量词</a>)
      </td>
      </tr>

      <tr>
       <td>*</td><td>量词，0 次或多次匹配</td>
      </tr>

      <tr>
       <td>+</td><td>量词，1 次或多次匹配</td>
      </tr>

      <tr>
       <td>{</td><td>自定义量词开始标记</td>
      </tr>

      <tr>
       <td>}</td><td>自定义量词结束标记</td>
      </tr>

     </tbody>
    
   </table>

   模式中方括号内的部分称为“<a href="regexp.reference.character-classes.php" class="link">字符类</a>”。
   在一个字符类中仅有以下可用元字符：

   <table class="doctable table">
    <caption><strong>方括号内的元字符（<em>字符类</em>）</strong></caption>
    
     <thead>
      <tr>
       <th>元字符</th><th>描述</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>\</td><td>转义字符</td>
      </tr>

      <tr>
       <td>^</td><td>仅在作为第一个字符(方括号内)时，表明字符类取反</td>
      </tr>

      <tr>
       <td>-</td><td>标记字符范围</td>
      </tr>

     </tbody>
    
   </table>


   下面章节描述了每个元字符的用法。
  </p>
 </div><?php manual_footer($setup); ?>