mirror of
https://github.com/php/doc-ru.git
synced 2025-08-16 18:22:04 +00:00
PCRE: improvements
git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@344324 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
@ -326,7 +326,7 @@ xmlns="http://docbook.org/ns/docbook"><simpara>Эта функция
|
||||
|
||||
<!ENTITY seealso.array.sorting '<link xmlns="http://docbook.org/ns/docbook" linkend="array.sorting">Сравнение функций сортировки массивов</link>'>
|
||||
|
||||
<!ENTITY seealso.callback 'информация о типе <link xmlns="http://docbook.org/ns/docbook" linkend="language.types.callback">callback</link>'>
|
||||
<!ENTITY seealso.callback 'Информация о типе <link xmlns="http://docbook.org/ns/docbook" linkend="language.types.callback">callback</link>'>
|
||||
|
||||
<!ENTITY avail.register-long-arrays 'Начиная с PHP 5.0.0, длинные <link xmlns="http://docbook.org/ns/docbook" linkend="language.variables.predefined">предопределенные переменные</link> массивов PHP могут быть отключены директивой <link xmlns="http://docbook.org/ns/docbook" linkend="ini.register-long-arrays">register_long_arrays</link>.'>
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 1634a886415d0ab4df195fe49d18a1c150b70758 Maintainer: shein Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<!-- Reviewed: yes Maintainer: lex -->
|
||||
<!-- $Revision$ -->
|
||||
|
||||
<book xml:id="book.pcre" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
@ -17,17 +17,17 @@
|
||||
Разделителем могут выступать произвольные символы, кроме
|
||||
буквенно-цифровых, обратного слеша '\' и нулевого байта.
|
||||
Если символ разделителя встречается в шаблоне, его необходимо
|
||||
экранировать. Начиная с PHP 4.0.4 в качестве разделителя
|
||||
экранировать. Начиная с PHP 4.0.4, в качестве разделителя
|
||||
доступны комбинации, используемые в Perl: (), {}, [] и <>.
|
||||
Подробней об этом рассказано в разделе
|
||||
"<link linkend="reference.pcre.pattern.syntax">Синтаксис регулярных выражений</link>".
|
||||
<link linkend="reference.pcre.pattern.syntax">Синтаксис регулярных выражений</link>.
|
||||
|
||||
</para>
|
||||
<para>
|
||||
После закрывающего разделителя можно указывать различные
|
||||
модификаторы, влияющие на работу регулярных выражений.
|
||||
Детальная информация доступна в разделе
|
||||
"<link linkend="reference.pcre.pattern.modifiers">Модификаторы шаблонов</link>".
|
||||
<link linkend="reference.pcre.pattern.modifiers">Модификаторы шаблонов</link>.
|
||||
</para>
|
||||
<para>
|
||||
PHP также поддерживает POSIX-совместимые регулярные выражения, используя
|
||||
@ -35,20 +35,20 @@
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
Этот модуль хранит глобальный (1 на поток) кэш компилированных
|
||||
Этот модуль хранит глобальный (1 на поток) кеш компилированных
|
||||
регулярных выражений (до 4096).
|
||||
</para>
|
||||
</note>
|
||||
<warning>
|
||||
<para>
|
||||
Помните об ограничениях PCRE. См. документацию по PCRE <link
|
||||
xlink:href="&url.pcre.man;">&url.pcre.man;</link> для информации.
|
||||
xlink:href="&url.pcre.man;">&url.pcre.man;</link> для дополнительной информации.
|
||||
</para>
|
||||
</warning>
|
||||
<para>
|
||||
Библиотека PCRE - это набор функций, реализующих разбор регулярных
|
||||
выражений с помощью того же синтаксиса и семантики, которая была
|
||||
реализована в Perl 5, с некоторыми небольшими отличиями (см. ниже).
|
||||
реализована в Perl 5, но с некоторыми небольшими отличиями (см. ниже).
|
||||
Текущая реализация соответствует версии Perl 5.005.
|
||||
</para>
|
||||
</preface>
|
||||
|
||||
@ -6,15 +6,15 @@
|
||||
&reftitle.install;
|
||||
<para>
|
||||
Расширение PCRE является расширением ядра, поэтому оно всегда доступно.
|
||||
По умолчанию, это расширение собирается с использованием встроенной библиотеки PCRE.
|
||||
Также можно использовать внешнюю PCRE библиотеку, указав при сборке
|
||||
По умолчанию это расширение собирается с использованием встроенной библиотеки PCRE.
|
||||
Также можно использовать внешнюю PCRE-библиотеку, указав при сборке
|
||||
параметр <option role="configure">--with-pcre-regex=DIR</option>, где
|
||||
<literal>DIR</literal> указывает на директорию с библиотеками и
|
||||
подключаемыми файлами PCRE. Для PHP 5.6 и 7.0 рекомендуется использовать
|
||||
PCRE 8.10 и выше.
|
||||
</para>
|
||||
<para>
|
||||
Начиная с PHP 7.0.0, по умолчанию поддерживается JIT компиляция PCRE. Ее можно
|
||||
Начиная с PHP 7.0.0, по умолчанию поддерживается JIT-компиляция PCRE. Ее можно
|
||||
отключить с помощью опции <option role="configure">--without-pcre-jit</option>
|
||||
начиная с PHP 7.0.12.
|
||||
</para>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
&reftitle.constants;
|
||||
&extension.constants;
|
||||
<table>
|
||||
<title>PREG константы</title>
|
||||
<title>Константы PREG</title>
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
@ -22,7 +22,7 @@
|
||||
Меняет порядок элементов в результирующем массиве так, чтобы
|
||||
элемент <varname>$matches[0]</varname> содержал полные
|
||||
вхождения шаблона, элемент <varname>$matches[1]</varname> -
|
||||
все вхождения первой взятой в круглые скобки подмаски, и так далее.
|
||||
все вхождения первой взятой в круглые скобки подмаски и т.д.
|
||||
Только <function>preg_match_all</function> реагирует на
|
||||
данный модификатор.
|
||||
</entry>
|
||||
@ -35,7 +35,7 @@
|
||||
элемент <varname>$matches[0]</varname> содержал первый набор
|
||||
вхождений (полное вхождение, вхождение первой подмаски,
|
||||
заключенной в круглые скобки...), аналогично элемент
|
||||
<varname>$matches[1]</varname> - второй набор вхождений, и так далее.
|
||||
<varname>$matches[1]</varname> - второй набор вхождений и т.д.
|
||||
Только <function>preg_match_all</function> реагирует на данный модификатор.
|
||||
</entry>
|
||||
<entry></entry>
|
||||
@ -114,7 +114,7 @@
|
||||
<entry><constant>PREG_BAD_UTF8_ERROR</constant></entry>
|
||||
<entry>
|
||||
Возвращается функцией <function>preg_last_error</function>, если
|
||||
последняя ошибка была вызвана поврежденными UTF-8 данными
|
||||
последняя ошибка была вызвана поврежденными данными UTF-8
|
||||
(только при запуске в <link linkend="reference.pcre.pattern.modifiers">режиме UTF-8</link>).
|
||||
</entry>
|
||||
<entry>5.2.0</entry>
|
||||
@ -131,7 +131,7 @@
|
||||
<row xml:id="constant.preg-jit-stacklimit-error">
|
||||
<entry><constant>PREG_JIT_STACKLIMIT_ERROR</constant></entry>
|
||||
<entry>
|
||||
Возвращается функцией <function>preg_last_error</function> если последняя
|
||||
Возвращается функцией <function>preg_last_error</function>, если последняя
|
||||
функция PCRE завершилась неудачно из-за лимита стека JIT.
|
||||
</entry>
|
||||
<entry>7.0.0</entry>
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: tony2001 Status: ready -->
|
||||
<!-- Reviewed: yes Maintainer: lex -->
|
||||
<!-- $Revision$ -->
|
||||
<appendix xml:id="pcre.examples">
|
||||
&reftitle.examples;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: f08a981a30c7f1871577f6908c265b798f19b33f Maintainer: shein Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<!-- Reviewed: yes Maintainer: lex -->
|
||||
<!-- $Revision$ -->
|
||||
<refentry xml:id="function.preg-grep" xmlns="http://docbook.org/ns/docbook">
|
||||
<refnamediv>
|
||||
@ -31,7 +31,7 @@
|
||||
<term><parameter>pattern</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Искомый шаблон, строка.
|
||||
Искомый шаблон в виде строки.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -46,7 +46,7 @@ if (preg_last_error() == PREG_BACKTRACK_LIMIT_ERROR) {
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
Возвращает одну из следующих констант, (<link
|
||||
Возвращает одну из следующих констант (<link
|
||||
linkend="pcre.constants">описанных на отдельной странице.</link>):
|
||||
<simplelist>
|
||||
<member><constant>PREG_NO_ERROR</constant></member>
|
||||
@ -56,8 +56,8 @@ if (preg_last_error() == PREG_BACKTRACK_LIMIT_ERROR) {
|
||||
<member><constant>PREG_RECURSION_LIMIT_ERROR</constant> (см. также <link
|
||||
linkend="ini.pcre.recursion-limit">pcre.recursion_limit</link>)</member>
|
||||
<member><constant>PREG_BAD_UTF8_ERROR</constant></member>
|
||||
<member><constant>PREG_BAD_UTF8_OFFSET_ERROR</constant> (начиная с PHP 5.3.0)</member>
|
||||
<member><constant>PREG_JIT_STACKLIMIT_ERROR</constant> (начиная с PHP 7.0.0)</member>
|
||||
<member><constant>PREG_BAD_UTF8_OFFSET_ERROR</constant> (с PHP 5.3.0)</member>
|
||||
<member><constant>PREG_JIT_STACKLIMIT_ERROR</constant> (с PHP 7.0.0)</member>
|
||||
</simplelist>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
<term><parameter>pattern</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Искомый шаблон, строка.
|
||||
Искомый шаблон в виде строки.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -73,7 +73,7 @@
|
||||
<para>
|
||||
Упорядочивает результаты так, что элемент <varname>$matches[0]</varname>
|
||||
содержит массив полных вхождений шаблона, элемент <varname>$matches[1]</varname>
|
||||
содержит массив вхождений первой подмаски, и так далее.
|
||||
содержит массив вхождений первой подмаски и т.д.
|
||||
</para>
|
||||
<para>
|
||||
<informalexample>
|
||||
@ -142,7 +142,7 @@ Array
|
||||
<para>
|
||||
Упорядочивает результаты так, что элемент <varname>$matches[0]</varname> содержит первый
|
||||
набор вхождений, элемент <varname>$matches[1]</varname> содержит второй набор вхождений,
|
||||
и так далее.
|
||||
и т.д.
|
||||
<informalexample>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
@ -393,7 +393,7 @@ FOO;
|
||||
preg_match_all('/(?P<name>\w+): (?P<digit>\d+)/', $str, $matches);
|
||||
|
||||
/* Это также работает в PHP 5.2.2 (PCRE 7.0) и более поздних версиях,
|
||||
* однако, вышеуказанная форма рекомендуется для обратной совместимости */
|
||||
* однако вышеуказанная форма рекомендуется для обратной совместимости */
|
||||
// preg_match_all('/(?<name>\w+): (?<digit>\d+)/', $str, $matches);
|
||||
|
||||
print_r($matches);
|
||||
@ -452,7 +452,7 @@ Array
|
||||
&reftitle.seealso;
|
||||
<para>
|
||||
<simplelist>
|
||||
<member>"<link linkend="pcre.pattern">Регулярные выражения PCRE</link>"</member>
|
||||
<member><link linkend="pcre.pattern">Регулярные выражения PCRE</link></member>
|
||||
<member><function>preg_quote</function></member>
|
||||
<member><function>preg_match</function></member>
|
||||
<member><function>preg_replace</function></member>
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
<term><parameter>pattern</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Искомый шаблон, строка.
|
||||
Искомый шаблон в виде строки.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -53,7 +53,7 @@
|
||||
результатами поиска. Элемент <varname>$matches[0]</varname>
|
||||
будет содержать часть строки, соответствующую вхождению
|
||||
всего шаблона, <varname>$matches[1]</varname> - часть строки,
|
||||
соответствующую первой подмаске, и так далее.
|
||||
соответствующую первой подмаске и так далее.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -191,7 +191,7 @@ Array
|
||||
</screen>
|
||||
<para>
|
||||
В качестве альтернативы <literal>substr()</literal>, используйте
|
||||
утверждение <literal>\G</literal> вместо якоря <literal>^</literal>,
|
||||
утверждение <literal>\G</literal> вместо якоря <literal>^</literal>
|
||||
или модификатор <literal>A</literal>. Оба они работают с параметром <parameter>offset</parameter>.
|
||||
</para>
|
||||
</informalexample>
|
||||
@ -228,7 +228,7 @@ Array
|
||||
<row>
|
||||
<entry>5.3.6</entry>
|
||||
<entry>
|
||||
Возвращает &false; если <parameter>offset</parameter> больше, чем длина
|
||||
Возвращает &false;, если <parameter>offset</parameter> больше, чем длина
|
||||
<parameter>subject</parameter>.
|
||||
</entry>
|
||||
</row>
|
||||
@ -275,7 +275,7 @@ if (preg_match("/php/i", "PHP is the web scripting language of choice.")) {
|
||||
<![CDATA[
|
||||
<?php
|
||||
/* Специальная последовательность \b в шаблоне означает границу слова,
|
||||
* следовательно, только изолированное вхождение слова 'web' будет
|
||||
следовательно, только изолированное вхождение слова 'web' будет
|
||||
соответствовать маске, в отличие от "webbing" или "cobweb" */
|
||||
if (preg_match("/\bweb\b/i", "PHP is the web scripting language of choice.")) {
|
||||
echo "Вхождение найдено.";
|
||||
@ -330,7 +330,7 @@ $str = 'foobar: 2008';
|
||||
preg_match('/(?P<name>\w+): (?P<digit>\d+)/', $str, $matches);
|
||||
|
||||
/* Это также работает в PHP 5.2.2 (PCRE 7.0) и более поздних версиях,
|
||||
* однако, вышеуказанная форма рекомендуется для обратной совместимости */
|
||||
однако вышеуказанная форма рекомендуется для обратной совместимости */
|
||||
// preg_match('/(?<name>\w+): (?<digit>\d+)/', $str, $matches);
|
||||
|
||||
print_r($matches);
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
<para>
|
||||
В случае, если указан необязательный параметр <parameter>delimiter</parameter>,
|
||||
он будет также экранироваться. Это удобно для экранирования
|
||||
разделителя, который используется в PCRE функциях. Наиболее
|
||||
разделителя, который используется в PCRE-функциях. Наиболее
|
||||
распространенным разделителем является символ <literal>/</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
@ -98,7 +98,7 @@
|
||||
&reftitle.examples;
|
||||
<para>
|
||||
<example>
|
||||
<title><function>preg_quote</function> пример</title>
|
||||
<title>Пример использования <function>preg_quote</function></title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 72af2380f5e6118d7823324ba69d6b33970f994f Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<!-- Reviewed: yes Maintainer: lex -->
|
||||
<!-- $Revision$ -->
|
||||
<refentry xml:id="function.preg-replace-callback-array" xmlns="http://docbook.org/ns/docbook">
|
||||
<refnamediv>
|
||||
@ -59,7 +59,7 @@
|
||||
<term><parameter>count</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Если задан, то в указанную переменную будет записано число произведенных замен.
|
||||
Если задан, то в указанную переменную будет записано количество произведенных замен.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -93,10 +93,10 @@ $subject = 'Aaaaaa Bbb';
|
||||
preg_replace_callback_array(
|
||||
[
|
||||
'~[a]+~i' => function ($match) {
|
||||
echo strlen($match[0]), ' matches for "a" found', PHP_EOL;
|
||||
echo 'Найдено ', strlen($match[0]), ' совпадений "a"', PHP_EOL;
|
||||
},
|
||||
'~[b]+~i' => function ($match) {
|
||||
echo strlen($match[0]), ' matches for "b" found', PHP_EOL;
|
||||
echo 'Найдено ', strlen($match[0]), ' совпадений "b"', PHP_EOL;
|
||||
}
|
||||
],
|
||||
$subject
|
||||
@ -107,8 +107,8 @@ preg_replace_callback_array(
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
6 matches for "a" found
|
||||
3 matches for "b" found
|
||||
Найдено 6 совпадений "a"
|
||||
Найдено 3 совпадений "b"
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
|
||||
@ -170,14 +170,14 @@ fclose($fp);
|
||||
<?php
|
||||
// Этот текст был использован в 2002 году
|
||||
// мы хотим обновить даты к 2003 году
|
||||
$text = "День дураков: 01/04/2002\n";
|
||||
$text.= "Последнее Рождество было: 24/12/2001\n";
|
||||
$text = "День смеха был 01/04/2002\n";
|
||||
$text.= "Последнее Рождество было 24/12/2001\n";
|
||||
// callback-функция
|
||||
function next_year($matches)
|
||||
{
|
||||
// как обычно: $matches[0] - полное вхождение шаблона
|
||||
// $matches[1] - вхождение первой подмаски,
|
||||
// заключенной в круглые скобки, и так далее...
|
||||
// заключенной в круглые скобки и так далее...
|
||||
return $matches[1].($matches[2]+1);
|
||||
}
|
||||
echo preg_replace_callback(
|
||||
@ -191,8 +191,8 @@ echo preg_replace_callback(
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
День дураков: 01/04/2003
|
||||
Последнее Рождество было: 24/12/2002
|
||||
День смеха был 01/04/2003
|
||||
Последнее Рождество было 24/12/2002
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
|
||||
@ -351,7 +351,7 @@ xp***to
|
||||
&reftitle.seealso;
|
||||
<para>
|
||||
<simplelist>
|
||||
<member>"<link linkend="pcre.pattern">Регулярные выражения PCRE</link>"</member>
|
||||
<member><link linkend="pcre.pattern">Регулярные выражения PCRE</link></member>
|
||||
<member><function>preg_quote</function></member>
|
||||
<member><function>preg_filter</function></member>
|
||||
<member><function>preg_match</function></member>
|
||||
|
||||
@ -22,19 +22,19 @@
|
||||
<entry><link linkend="ini.pcre.backtrack-limit">pcre.backtrack_limit</link></entry>
|
||||
<entry>"1000000"</entry>
|
||||
<entry>PHP_INI_ALL</entry>
|
||||
<entry>Доступна с PHP 5.2.0.</entry>
|
||||
<entry>Доступно с PHP 5.2.0.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><link linkend="ini.pcre.recursion-limit">pcre.recursion_limit</link></entry>
|
||||
<entry>"100000"</entry>
|
||||
<entry>PHP_INI_ALL</entry>
|
||||
<entry>Доступна с PHP 5.2.0.</entry>
|
||||
<entry>Доступно с PHP 5.2.0.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><link linkend="ini.pcre.jit">pcre.jit</link></entry>
|
||||
<entry>"1"</entry>
|
||||
<entry>PHP_INI_ALL</entry>
|
||||
<entry>Доступна с PHP 7.0.0.</entry>
|
||||
<entry>Доступно с PHP 7.0.0.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
@ -53,7 +53,7 @@
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Лимит обратных ссылок PCRE. Для PHP < 5.3.7, значение по умолчанию 100000.
|
||||
Лимит обратных ссылок PCRE. Для PHP < 5.3.7 значение по умолчанию 100000.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -67,7 +67,7 @@
|
||||
Лимит на рекурсию. Не забывайте о том, что если вы установите
|
||||
достаточно высокое значение, то PCRE может превысить размер
|
||||
стека (установленный операционной системой) и в конце концов
|
||||
вызовет крушение PHP.
|
||||
вызовет падение PHP.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -78,7 +78,7 @@
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Будет использоваться PCRE just-in-time компиляция.
|
||||
Будет ли использоваться JIT-компиляция PCRE.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<!-- Reviewed: yes Maintainer: lex -->
|
||||
<!-- $Revision$ -->
|
||||
<!-- splitted from ./en/functions/pcre.xml, last change in rev 1.2 -->
|
||||
<article xml:id="reference.pcre.pattern.differences" xmlns="http://docbook.org/ns/docbook">
|
||||
@ -11,20 +11,20 @@
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
По умолчанию, пробельный символ - это любой символ, который функция isspace()
|
||||
По умолчанию пробельный символ - это любой символ, который функция isspace()
|
||||
из библиотеки C опознает таковым, хотя возможно скомпилировать PCRE с альтернативными
|
||||
таблицами символов. Функция isspace() определяет как пробельный следующие символы:
|
||||
пробел, конец страницы (formfeed), перевод строки, возврат каретки, горизонтальную
|
||||
табуляцию и вертикальную табуляцию. Perl 5 же, не включает вертикальную табуляцию в
|
||||
список пробельных символов. Экранирование \v, долгое время присутствовавшее в
|
||||
документации Perl, на самом деле никогда не распознавалось. Однако, символ как таковой,
|
||||
табуляцию и вертикальную табуляцию. Perl 5 же не включает вертикальную табуляцию в
|
||||
список пробельных символов. Экранирование \v долгое время присутствовавшее в
|
||||
документации Perl на самом деле никогда не распознавалось. Однако, символ как таковой,
|
||||
считался за пробельный до версии 5.002. В 5.004 и 5.005 он не определяется как \s.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
PCRE не позволяет использовать квантификаторы повторения в опережающих
|
||||
предположениях. Perl разрешает, но они не означаю того, о чем вы могли подумать. К
|
||||
предположениях. Perl разрешает, но они не означают того, о чем вы могли подумать. К
|
||||
примеру, (?!a){3} не проверяет, что следующие три символа не "a". Проверяется только то,
|
||||
что следующий символ не "a" три раза.
|
||||
</simpara>
|
||||
@ -41,7 +41,7 @@
|
||||
<listitem>
|
||||
<simpara>
|
||||
Хотя бинарные нулевые символы поддерживаются в проверяемой строке, они недопустимы
|
||||
в строке шаблона, потому, что она передается как нормальная C строка, в которой этот
|
||||
в строке шаблона, потому что она передается как нормальная C-строка, в которой этот
|
||||
символ обозначает конец строки. Для его использования в строке шаблона необходимо
|
||||
пользоваться конструкцией "\x00".
|
||||
</simpara>
|
||||
@ -49,7 +49,7 @@
|
||||
<listitem>
|
||||
<simpara>
|
||||
Следующие экранирующие последовательности Perl не поддерживаются:
|
||||
\l, \u, \L, \U. Фактически, они реализованы стандартным обработчикос строк Perl и
|
||||
\l, \u, \L, \U. Фактически они реализованы стандартным обработчиком строк Perl и
|
||||
не являются частью модуля обработки регулярных выражений.
|
||||
</simpara>
|
||||
</listitem>
|
||||
@ -71,8 +71,8 @@
|
||||
когда часть шаблона повторяется. К примеру, проверка "aba" шаблоном /^(a(b)?)+$/,
|
||||
устанавливает $2 в значение "b", но проверка "aabbaa" шаблоном /^(aa(bb)?)+$/,
|
||||
оставляет $2 не выставленной. Хотя, если шаблон поменять на /^(aa(b(b))?)+$/, то $2
|
||||
(и $3) будут установлены. В Perl 5.004, $2 установится в обоих случаях, и это, также,
|
||||
истинно и для PCRE. Если в будущем Perl как либо зафиксирует это поведение, PRCE
|
||||
(и $3) будут установлены. В Perl 5.004, $2 установится в обоих случаях, и это также
|
||||
истинно и для PCRE. Если в будущем Perl как-либо зафиксирует это поведение, PRCE
|
||||
будет ему следовать.
|
||||
</simpara>
|
||||
</listitem>
|
||||
@ -99,7 +99,7 @@
|
||||
<simpara>
|
||||
Если установлена <link linkend="reference.pcre.pattern.modifiers">PCRE_DOLLAR_ENDONLY</link>
|
||||
и не установлена <link linkend="reference.pcre.pattern.modifiers">PCRE_MULTILINE</link>,
|
||||
мета-символ $ распознается только в самом конце строки.
|
||||
метасимвол $ распознается только в самом конце строки.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
@ -112,8 +112,8 @@
|
||||
<listitem>
|
||||
<simpara>
|
||||
Если установлена <link linkend="reference.pcre.pattern.modifiers">PCRE_UNGREEDY</link>,
|
||||
жадность квантификаторов повторения инвертирована. То есть, по умолчанию они не
|
||||
жадные, но если за ними знак вопроса, то да.
|
||||
жадность квантификаторов повторения инвертирована. То есть по умолчанию они не
|
||||
жадные, пока за ними не будет знак вопроса.
|
||||
</simpara>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
<titleabbrev>Описывает возможные модификаторы шаблонов Perl-совместимых регулярных выражений (PCRE)</titleabbrev>
|
||||
<para>
|
||||
Ниже перечислены все доступные на сегодняшний день модификаторы.
|
||||
Имя, взятое в круглые скобки, указывает внутреннее PCRE имя для данного модификатора.
|
||||
Имя, взятое в круглые скобки, указывает внутреннее PCRE-имя для данного модификатора.
|
||||
Пробелы и переводы строк в модификаторах игнорируются, другие символы
|
||||
вызывают ошибки.
|
||||
</para>
|
||||
@ -27,7 +27,7 @@
|
||||
<term><emphasis>m</emphasis> (<literal>PCRE_MULTILINE</literal>)</term>
|
||||
<listitem>
|
||||
<simpara>
|
||||
По умолчанию, PCRE обрабатывает данные как однострочную символьную строку
|
||||
По умолчанию PCRE обрабатывает данные как однострочную символьную строку
|
||||
(даже если она содержит несколько разделителей строк).
|
||||
Метасимвол начала строки '^' соответствует только началу
|
||||
обрабатываемого текста, в то время как метасимвол "конец строки"
|
||||
@ -54,7 +54,7 @@
|
||||
<simpara>
|
||||
Если данный модификатор используется, метасимвол "точка"
|
||||
в шаблоне соответствует всем символам, включая перевод
|
||||
строк. Без него - всем, за исключением переводов строк.
|
||||
строк. Без него - все символы, кроме переводов строк.
|
||||
Этот модификатор эквивалентен записи /s в Perl.
|
||||
Класс символов, построенный на отрицании, например [^a],
|
||||
всегда соответствует переводу строки, независимо от
|
||||
@ -175,7 +175,7 @@ $html = preg_replace_callback(
|
||||
<listitem>
|
||||
<simpara>
|
||||
Если используется данный модификатор, соответствие шаблону
|
||||
будет достигаться только в том случае, если он "заякорен", т.е.
|
||||
будет достигаться только в том случае, если он "заякорен", то есть
|
||||
соответствует началу строки, в которой производится поиск.
|
||||
Того же эффекта можно достичь подходящей конструкцией с вложенным
|
||||
шаблоном, которая является единственным способом реализации
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 4fe7ad5b9e5edb16684a3d4323a84f64236977eb Maintainer: northcat Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<!-- Reviewed: yes Maintainer: lex -->
|
||||
<!-- $Revision$ -->
|
||||
<article xml:id="reference.pcre.pattern.posix" xmlns="http://docbook.org/ns/docbook">
|
||||
<title>Отличия от регулярных выражений POSIX</title>
|
||||
|
||||
<para>
|
||||
По состоянию на PHP 5.3.0, расширение <link linkend="book.regex">регулярные выражения POSIX</link>
|
||||
По состоянию на PHP 5.3.0 расширение <link linkend="book.regex">регулярных выражений POSIX</link>
|
||||
считается устаревшим. Существует целый ряд отличий между регулярными выражениями POSIX и
|
||||
PCRE. На этой странице перечислены наиболее важные из них, которые необходимо
|
||||
знать для того, чтобы выполнить преобразование в PCRE.
|
||||
@ -21,7 +21,7 @@
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
В отличие от POSIX, в расширении PCRE нет специальных функция для поиска совпадений
|
||||
В отличие от POSIX, в расширении PCRE нет специальных функций для поиска совпадений
|
||||
без учета регистра. Вместо них используется <link linkend="reference.pcre.pattern.modifiers">модификатор шаблона</link>
|
||||
<emphasis>i</emphasis> (<literal>PCRE_CASELESS</literal>). Также доступны другие
|
||||
модификаторы шаблонов для изменения стратегии поиска совпадений.
|
||||
@ -54,8 +54,8 @@
|
||||
не поддерживаются.
|
||||
</simpara>
|
||||
<simpara>
|
||||
Передача выражения с символьным классом, начинающегося и заканчивающегося на
|
||||
<literal>:</literal>, <literal>.</literal> или <literal>=</literal> символы,
|
||||
Передача выражения с символьным классом, начинающегося и заканчивающегося на символы
|
||||
<literal>:</literal>, <literal>.</literal> или <literal>=</literal>,
|
||||
в PCRE рассматривается как попытка использования одной из этих неподдерживаемых функций
|
||||
и вызывает ошибку компиляции.
|
||||
</simpara>
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- Reviewed: yes Maintainer: lex -->
|
||||
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: tony2001 Status: ready -->
|
||||
<reference xml:id="ref.pcre" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Функции для работы с регулярными выражениями (Perl-совместимые)</title>
|
||||
<titleabbrev>PCRE</titleabbrev>
|
||||
<title>&Functions; PCRE</title>
|
||||
|
||||
&reference.pcre.entities.functions;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user