Подшари
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Подшари
Референца за `regexp.reference.subpatterns.php` со подобрена типографија и навигација.
Подшари
Subpatterns are delimited by parentheses (round brackets), which can be nested. Marking part of a pattern as a subpattern does two things:
-
Подшаблоните се разграничени со загради (кружни загради), кои можат да бидат вгнездени. Означувањето на дел од шаблонот како подшаблон прави две работи:
cat(aract|erpillar|)Локализира сет на алтернативи. На пример, шаблонот -
одговара на еден од зборовите "cat", "cataract" или "caterpillar". Без заградите, тој би одговарал на "cataract", "erpillar" или празниот стринг. ovector аргументот на pcre_exec()Го поставува подшаблонот како подшаблон за фаќање (како што е дефинирано погоре). Кога целиот шаблон ќе се совпадне, оној дел од стринг од субјектот што се совпаднал со подшаблонот се враќа на повикувачот преку
. Отварачките загради се бројат од лево надесно (почнувајќи од 1) за да се добијат броевите на подшаблоните за фаќање.
the ((red|white) (king|queen))
На пример, ако стринг "the red king" се совпадне со шаблонот
фатените подстрингови се "red king", "red" и "king", и се нумерирани 1, 2 и 3.
the ((?:red|white) (king|queen))
Фактот дека обичните загради исполнуваат две функции не е секогаш корисен. Честопати има моменти кога е потребен подшаблон за групирање без потреба од фаќање. Ако отворачката заграда е проследена со ":?", подшаблонот не прави никакво фаќање и не се брои при пресметување на бројот на какви било последователни подшаблони за фаќање. На пример, ако стринг "the white queen" се совпадне со шаблонот
фатените подстрингови се "white queen" и "queen", и се нумерирани 1 и 2. Максималниот број на фатени подстрингови е 65535. Сепак, можеби нема да биде можно да се компајлираат такви големи шаблони, во зависност од опциите за конфигурација на libpcre.
(?i:saturday|sunday) (?:(?i)saturday|sunday)
Како пригоден кратенка, ако се потребни поставки на опции на почетокот на подшаблон што не фаќа, буквите со опции може да се појават помеѓу "?" и ":". Така двата шаблони
одговараат на сосема истиот сет на стрингови. Бидејќи алтернативните гранки се пробуваат од лево надесно, а опциите не се ресетираат додека не се достигне крајот на подшаблонот, поставката на опција во една гранка влијае на последователните гранки, така што горните шаблони одговараат на "SUNDAY" како и на "Saturday".
(?P<name>pattern)Можно е да се именува подшаблон користејќи ја синтаксата
(?<name>pattern) and (?'name'pattern).
. Овој подшаблон потоа ќе биде индексиран во низата на совпаѓања по неговата нормална бројчена позиција, а исто така и по име. Постојат две алтернативни синтакса (?| Понекогаш е неопходно да има повеќекратни совпаѓања, но алтернативни групи во регуларен израз. Нормално, секоја од нив би добила свој број на задна референца, иако само една од нив би можела некогаш да се совпадне. За да се надмине ова, Sunday:
(?:(Sat)ur|(Sun))day
синтаксата дозволува дупликат броеви. Разгледајте го следниот regex совпаднат со стринг Sun Тука Saturday yields
Sat се чува во задна референца 2, додека задната референца 1 е празна. Совпаѓање (?| во задна референца 1, додека задната референца 2 не постои. Промена на шаблонот за користење на
(?|(Sat)ur|(Sun))day
го решава овој проблем: Sun and Sat
would be stored in backreference 1.