PHP.mk документација

Асерции

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

regexp.reference.assertions.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека regexp.reference.assertions.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
Асерции

Референца за `regexp.reference.assertions.php` со подобрена типографија и навигација.

regexp.reference.assertions.php

Асерции

An assertion is a test on the characters following or preceding the current matching point that does not actually consume any characters. The simple assertions coded as \b, \B, \A, \Z, \z, ^ and $ are described in секвенци за бегство. Посложените проверки се кодираат како подшари. Постојат два вида: оние што . Посложени тврдења се кодираат како подшаблони. Постојат два вида: оние што гледаат напред од тековната позиција во низата на субјектот, и оние што it.

гледаат назад Подшаблонот за тврдење се совпаѓа на нормален начин, освен што не предизвикува промена на тековната позиција за совпаѓање. Тврдењата за гледање напред започнуваат со (?= за позитивни тврдења и (?! за негативни тврдења. На пример, \w+(?=;) совпаѓа збор проследен со точка-запирка, но не ја вклучува точка-запирката во совпаѓањето, и foo(?!bar) совпаѓа било која појава на "foo" што не е проследена со "bar". Забележете дека очигледно сличниот шаблон (?!foo)bar не наоѓа појава на "bar" што е претходена од нешто различно од "foo"; тој наоѓа било која појава на "bar" воопшто, бидејќи тврдењето (?!foo) е секогаш true кога следните три знаци се "bar". Потребно е тврдење за гледање назад за да се постигне овој ефект.

Тврдењата за гледање назад започнуваат со (?<= за позитивни тврдења и (?<! за негативни тврдења. На пример, наоѓа појава на "bar" што не е претходена од "foo". Содржината на тврдењето за гледање назад е ограничена така што сите низи што ги совпаѓа мора да имаат фиксна должина. Сепак, ако постојат неколку алтернативи, тие не мора сите да имаат иста фиксна должина. Така, (?<!foo)bar е дозволено, но (?<=bullock|donkey) предизвикува грешка при компајлирање. Гранките што совпаѓаат низи со различна должина се дозволени само на највисоко ниво на тврдење за гледање назад. Ова е проширување во споредба со Perl 5.005, кој бара сите гранки да совпаѓаат иста должина на низа. Тврдење како (?<!dogs?|cats?) не е дозволено, бидејќи неговата единствена гранка на највисоко ниво може да совпадне две различни должини, но прифатливо е ако се преработи за да користи две гранки на највисоко ниво: (?<=ab(c|de)) Имплементацијата на тврдењата за гледање назад е, за секоја алтернатива, привремено да се помести тековната позиција назад за фиксната ширина и потоа да се обиде да се совпадне. Ако нема доволно знаци пред тековната позиција, совпаѓањето се смета за неуспешно. Гледањата назад во комбинација со подшаблони само еднаш може да бидат особено корисни за совпаѓање на крајот од низите; пример е даден на крајот од делот за подшаблони само еднаш. (?<=abc|abde) Неколку тврдења (од било кој вид) може да се појават едно по друго. На пример,

совпаѓа "foo" претходено од три цифри што не се "999". Забележете дека секое од тврдењата се применува независно на истата точка во низата на субјектот. Прво има проверка дека претходните три знаци се сите цифри, потоа има проверка дека истите три знаци не се "999". Овој шаблон не совпаѓа "foo" претходено од шест знаци, од кои првиот се цифри, а последните три не се "999". На пример, не совпаѓа "123abcfoo". Шаблон за да се постигне тоа е (?<=\d{3})(?<!999)foo одговара на "foo" што му претходат три цифри кои не се "999". Забележете дека секоја од проверките се применува независно на истата точка во низата на субјектот. Прво се проверува дали претходните три знаци се сите цифри, а потоа се проверува дека истите три знаци не се "999". Овој шаблон не одговара на "foo" што му претходат шест знаци, од кои првите се цифри, а последните три не се "999". На пример, не одговара на "123abcfoo". Шаблон за да се направи тоа е (?<=\d{3}...)(?<!999)foo

Овој пат првата проверка гледа на претходните шест знаци, проверувајќи дека првите три се цифри, а потоа втората проверка проверува дека претходните три знаци не се "999".

Проверките можат да бидат вгнездени во која било комбинација. На пример, (?<=(?<!foo)bar)baz одговара на појава на "baz" на која ѝ претходи "bar" што пак не ѝ претходи "foo", додека (?<=\d{3}...(?<!999))foo е друг образец што одговара на "foo" на кое ѝ претходат три цифри и кои било три знаци што не се "999".

Под-обрасците за проверка не се под-обрасци за снимање и не можат да се повторат, бидејќи нема смисла да се проверува истото неколку пати. Ако која било проверка содржи под-обрасци за снимање во себе, тие се бројат за целите на броењето на под-обрасците за снимање во целиот образец. Сепак, снимањето на поднизови се врши само за позитивни проверки, бидејќи нема смисла за негативни проверки.

Проверките се бројат кон максимумот од 200 заградени под-обрасци.

Белешки од корисници

Нема белешки од корисници за оваа страница.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.