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

Класи на карактери

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

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

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

regexp.reference.character-classes.php

Класи на карактери

Отворен квадратен заграда воведува класа на знаци, завршена со затворен квадратна заграда. Затворен квадратна заграда сама по себе не е посебна. Ако затворен квадратна заграда е потребна како член на класата, таа треба да биде првиот податочен знак во класата (по почетен циркумфлекс, ако постои) или избегната со коса црта.

Класата на знаци одговара на еден знак во субјектот; знакот мора да биде во множеството знаци дефинирано со класата, освен ако првиот знак во класата не е циркумфлекс, во кој случај знакот на субјектот не смее да биде во множеството дефинирано со класата. Ако циркумфлексот е навистина потребен како член на класата, осигурете се дека не е првиот знак, или избегнете го со коса црта.

На пример, класата на знаци [aeiou] одговара на која било самогласка со мали букви, додека [^aeiou] одговара на кој било знак што не е самогласка со мали букви. Имајте предвид дека циркумфлексот е само пригоден запис за специфицирање на знаците што се во класата со набројување на оние што не се. Тоа не е тврдење: сè уште троши знак од низата на субјектот и не успева ако тековниот покажувач е на крајот на низата.

Кога е поставено нечувствително на големината на буквите (без разлика на големината), сите букви во класа претставуваат и нивни големи и мали верзии, така што, на пример, нечувствително [aeiou] одговара на "A" како и на "a", а нечувствително [^aeiou] не одговара на "A", додека чувствителна (со големина на букви) верзија би одговарала.

Знакот за нов ред никогаш не се третира на посебен начин во класи на знаци, без оглед на поставката на опциите. Класа како што е [^a] секогаш ќе одговара на нов ред. PCRE_DOTALL or PCRE_MULTILINE Знакот минус (цртичка) може да се користи за специфицирање опсег на знаци во класа на знаци. На пример, [d-m] одговара на која било буква помеѓу d и m, вклучително. Ако знак минус е потребен во класа, тој мора да биде избегнат со коса црта или да се појави на позиција каде што не може да се толкува како укажување на опсег, типично како прв или последен знак во класата.

Не е можно да се има буквалниот знак "]" како краен знак на опсег. Образец како [W-]46] се толкува како класа од два знака ("W" и "-") проследена со буквална низа "46]", така што би одговарала на "W46]" или "-46]". Сепак, ако "]" е избегнат со коса црта се толкува како крај на опсег, така што [W-\]46] се толкува како една класа што содржи опсег проследен со два одделни знака. Окталната или хексадецималната репрезентација на "]" исто така може да се користи за завршување на опсег.

Типовите на знаци \d, \D, \s, \S, \w, и \W исто така може да се појават во класа на знаци и да ги додадат знаците што ги одговараат на класата. На пример, [\dABCDEF] одговара на кој било хексадецимален број. Циркумфлексот може погодно да се користи со типовите на знаци со големи букви за да се специфицира поограничено множество знаци отколку што одговара типот со мали букви. На пример, класата [^\W_] одговара на која било буква или број, но не и на подвлекување.

Ranges operate in ASCII collating sequence. They can also be used for characters specified numerically, for example [\000-\037]. If a range that includes letters is used when case-insensitive (caseless) matching is set, it matches the letters in either case. For example, [W-c] is equivalent to [][\^_`wxyzabc], matched case-insensitively, and if character tables for the "fr" locale are in use, [\xc8-\xcb] matches accented E characters in both cases.

Сите неалфанумерички знаци освен \, -, ^ (на почеток) и завршниот ] се неспецијални во класи на знаци, но не штети ако се избегнати. Терминаторот на образецот е секогаш специјален и мора да биде избегнат кога се користи во израз.

Perl поддржува POSIX нотација за класи на знаци. Ова користи имиња затворени во "]" во рамките на затворените квадратни загради. PCRE исто така ја поддржува оваа нотација. На пример, "[[:digit:]%[:alpha:]]" одговара на "0", "1", која било алфабетска буква, или "%". Поддржаните имиња на класи се:

букви и броеви [: and :] код на знаци 0 - 127 [01[:alpha:]%] само празно место или табулатор

Класи на карактери
alnumконтролни знаци
alphaletters
asciiдецимални броеви (исто како \d)
blankпечатени знаци, исклучувајќи празно место
cntrlбукви со мали букви
digitдецимални цифри (исто како \d)
graphпечатење знаци, исклучувајќи го празниот простор
lowerмали букви
printпечатење знаци, вклучувајќи празно место
punctпечатење знаци, исклучувајќи букви и цифри
spaceпразно место (не сосема исто како \s)
upperголеми букви
word„збор“ знаци (исто како \w)
xdigitхексадецимални цифри
На space знаците се HT (9), LF (10), VT (11), FF (12), CR (13), и празно место (32). Забележете дека оваа листа го вклучува VT знакот (код 11). Ова го прави „празно место“ различно од \s, што не го вклучува VT (за компатибилност со Perl).

Името word е Perl екстензија, и blank е GNU екстензија од Perl 5.8. Друга Perl екстензија е негација, која е означена со ^ знак по двоеточието. На пример, [12[:^digit:]] одговара на „1“, „2“, или која било не-цифра.

Во UTF-8 режим, знаците со вредности поголеми од 128 не одговараат на ниту една од POSIX класите на знаци. Од libpcre 8.10 некои класи на знаци се променети за да користат Unicode својства на знаци, во кој случај споменатата рестрикција не се применува. Погледнете го » PCRE(3) прирачникот интерполација на низи

Unicode својствата на знаците можат да се појават внатре во класа на знаци. Тие не можат да бидат дел од опсег. Минус (цртичка) знакот по Unicode класа на знаци ќе одговара буквално. Обидот да се заврши опсег со Unicode својство на знак ќе резултира со предупредување.

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

greaties на ghvernuft dot nl
пред 4 години
From deep down the PCRE manual at http://www.pcre.org/pcre.txt :

         \d     any decimal digit
         \D     any character that is not a decimal digit
         \h     any horizontal white space character
         \H     any character that is not a horizontal white space character
         \s     any white space character
         \S     any character that is not a white space character
         \v     any vertical white space character
         \V     any character that is not a vertical white space character
         \w     any "word" character
         \W     any "non-word" character
Јулијан
3 години пред
Examples with Character classes

<?php

$stringA = "1 In the beginning God created the heavens and the earth.";
$stringB = preg_replace('/[[:^alnum:]]/', '', $stringA); // string(46) "1InthebeginningGodcreatedtheheavensandtheearth"
$stringC = preg_replace('/[[:^alpha:]]/', '', $stringA); // string(45) "InthebeginningGodcreatedtheheavensandtheearth"
$stringD = preg_replace('/[[:^ascii:]]/', '', "Pokémon"); // string(6) "Pokmon"
$stringE = preg_replace('/[[:^blank:]]/', '*', $stringA); // string(57) "* ** *** ********* *** ******* *** ******* *** *** ******"
$stringF = preg_replace('/[[:blank:]]/', '-', $stringA); // string(57) "1-In-the-beginning-God-created-the-heavens-and-the-earth."

$stringG = sprintf("Vertical Tabulation: %s", chr(11)); // string(22) "Vertical Tabulation: "
$stringH = preg_replace('/[[:cntrl:]]/', '', $stringG); // string(21) "Vertical Tabulation: "
$stringLengthG = strlen($stringG); // int(22)
$stringLengthH = strlen($stringH); // int(21)

$stringI = preg_replace('/[[:digit:]]/', '', 'My age is 35'); //string(10) "My age is "
$stringJ = preg_replace('/[[:^digit:]]/', '', 'My age is 35'); // string(2) "35"

$stringK = preg_replace('/[[:^graph:]]/', '', $stringG); // string(19) "VerticalTabulation:"
$stringL = preg_replace('/[[:graph:]]/', '', $stringG); // string(3) "  "

$stringM = preg_replace('/[[:lower:]]/', '', $stringG); // string(6) "V T: "
$stringN = preg_replace('/[[:^lower:]]/', '', $stringG); // string(16) "erticalabulation"

$stringO = preg_replace('/[[:^print:]]/', '', $stringG); // string(21) "Vertical Tabulation: "
$stringP = preg_replace('/[[:print:]]/', '', $stringG); // string(1) ""

$stringQ = preg_replace('/[[:punct:]]/', '', $stringG); // string(21) "Vertical Tabulation "
$stringR = preg_replace('/[[:^punct:]]/', '', $stringG); // string(1) ":"

$stringS = preg_replace('/[[:space:]]/', '', $stringG); // string(19) "VerticalTabulation:"
$stringT = preg_replace('/[[:^space:]]/', '', $stringG); // string(3) "  "

$stringU = preg_replace('/[[:upper:]]/', '', $stringG); // string(20) "ertical abulation: "
$stringV = preg_replace('/[[:^upper:]]/', '', $stringG); // string(2) "VT"

$stringW = preg_replace('/[[:word:]]/', '', $stringG); // string(4) " : "
$stringX = preg_replace('/[[:^word:]]/', '', $stringG); // string(18) "VerticalTabulation"

$stringY = preg_replace('/[[:xdigit:]]/', '', 'abcdefghijklmnopqrstuvwxyz0123456789'); // string(20) "ghijklmnopqrstuvwxyz"
$stringZ = preg_replace('/[[:^xdigit:]]/', '', 'abcdefghijklmnopqrstuvwxyz0123456789'); // string(16) "abcdef0123456789"
wordragon на wrestingcontrol dot com
пред 7 години
The documentation says:

"The character types \d, \D, \s, \S, \w, and \W may also appear in a character class, and add the characters that they match to the class."

It does not stress that other escape types may not.  I wanted to split a string on either a comma (","), or a new line "\n".  When my input stream began to include "\r\n", I decided to change "\n" to "\R".  Unfortunately, my test string did not include a capital "R", or I might have found the problem sooner.  My '/[\R,]/' was simply splitting on comma and the letter "R".

My test string...
"The Yum-Yum Company\r\n127 bernard street"

What DID work: '/(?:\R|,)+/'

["The Yum-Yum Company","127 bernard street"]

Given character classes only match one character, I can see clearly why my expectations were justifiably dashed, but hopefully this comment will save time for someone else.

I might add, this has taught me the value of PCRE_EXTRA (modifier "X"), which I have begun to use routinely now.
На оваа страница

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

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

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

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

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