Udostępnij za pośrednictwem


TR1 Regular Expressions

W tym temacie omówiono grammars różnych silników wyrażenia regularnego, które obsługuje TR1.

W tym temacie

  • Gramatyka wyrażenia regularne

  • Podsumowanie gramatyki

  • Szczegóły semantyczne

  • Dopasowywanie i wyszukiwanie

  • Format flagi

Gramatyka wyrażenia regularne

Bb982727.collapse_all(pl-pl,VS.110).gifElement

Element może być jedną z następujących czynności:

  • Zwykłego znaku , które odpowiadają ten sam znak w kolejności docelowych.

  • A symbol wieloznaczny ".", które odpowiadają dowolny znak w sekwencji docelowych, z wyjątkiem nowego wiersza.

  • A wyrażenie nawias formularza "expr", która dopasowuje znak lub element sortowania w sekwencji docelowego, który jest także w zestawie zdefiniowanych przez wyrażenieexpr, lub w formularzu "[^expr", która dopasowuje znak lub element sortowania w sekwencji docelowego, który nie jest w zestawie zdefiniowanych przez wyrażenieexpr.

    Wyrażenie expr może zawierać dowolną kombinację następujących czynności:

    • Indywidualnego charakteru.Dodaje ten znak w zestawie zdefiniowane przez expr.

    • A zakres znaków formularza "ch1-ch2".Dodaje znaki, które są reprezentowane przez wartości w zakresie zamknięte ch1, ch2 do zestawu, zdefiniowane przezexpr.

    • A klasy znaku formularza "[:name:]".Dodaje znaki w klasie nazwany zestaw, zdefiniowany przez expr.

    • Klasy równoważności formularza "[=elt=]".Dodaje sortowania elementów, które są równoważne z elt do zestawu, zdefiniowane przez expr.

    • A zestawiania symbol formularza "[.elt.]".Dodaje element sortowania elt do zestawu, zdefiniowane przez expr.

  • Kontrolnych.Zakotwiczenia "^" pasuje do początku sekwencji docelowych; zakotwiczenia '$' pasuje do końca sekwencji docelowych.

A Przechwytywanie grupy formularza "( wyrażenia cząstkowego )", lub "\ ( wyrażenia cząstkowego \)" w BRE i grep, które dopasowuje sekwencję znaków zgodnie z sekwencją docelowego dorównuje deseń pomiędzy ogranicznikami.

  • Escape tożsamości formularza "\k", która dopasowuje znak k w kolejności docelowych.

Przykłady:

  • "" odpowiada kolejności docelowych "" ale nie pasuje sekwencji docelowych "B", "b" lub "c".

  • "." dopasowuje wszystkie sekwencje docelowych "a", "B", "b" i "c".

  • "[b-z]" pasuje do docelowego sekwencji "b" i "c", ale nie pasuje sekwencji docelowych "" lub "B".

  • "[: niższe:]" odpowiada sekwencji docelowych "a", "b" i "c", ale nie odpowiada kolejności docelowych "B".

  • "()" odpowiada kolejności docelowych "" i stowarzyszonych przechwytywania grupy 1 z podciąg "," ale nie pasuje sekwencji docelowych "B", "b" lub "c".

W ECMAScript, BRE, i grep, element może być również z powrotem odniesienia formularza "\dd", gdzie dd reprezentuje wartość dziesiętna N, które dopasowuje sekwencję znaków w sekwencji docelowego jest taka sama, jak sekwencja znaków jest równoważona arytmetyczny Przechwytywanie grupy.Na przykład, "() \1" odpowiada sekwencji docelowych "aa", ponieważ grupa pierwsza (i tylko) przechwytywania odpowiada początkowy sekwencji "a" i następnie \1 odpowiada końcowego sekwencji "".

W ECMAScript, element może również być jedną z następujących czynności:

  • A - do przechwytywania grupy formularza "(?: podwyrażenia )".Dopasowuje sekwencję znaków zgodnie z sekwencją docelowego dorównuje deseń pomiędzy ogranicznikami.

  • Ograniczony escape format pliku z formularza "\f", "\n", "\r", "\t" lub "\v".Odpowiadają one znak wysuwu formularza, nowy wiersz, znak powrotu karetki, tabulator poziomy i tabulacji pionowej, odpowiednio, w kolejności docelowych.

  • A potwierdzenia pozytywnych formularza "(? = podwyrażenia )".Dopasowuje sekwencję znaków w sekwencji docelowego dorównuje deseń pomiędzy ogranicznikami, ale nie zmienianie położenia dopasowania w sekwencji docelowych.

  • A negatywne potwierdzenia formularza "(?wyrażenia cząstkowego ) ".Odpowiada dowolnej sekwencji znaków w sekwencji docelowego nie pasuje do wzorca pomiędzy ogranicznikami, a nie zmienić położenie dopasowanie sekwencji docelowych.

  • A szesnastkową sekwencję anulowania formularza "\xhh".Pasuje do znaku w kolejności docelowych, reprezentowanych przez dwie cyfry szesnastkowe hh.

  • A sekwencji escape unicode formularza "\uhhhh".Pasuje do znaku w sekwencji docelowej, która jest reprezentowana przez cztery cyfry szesnastkowe hhhh.

  • A sekwencji unikowej sterowania formularza "\ck".Dopasowuje znak kontrolny, który nosi znak k.

  • A assert granicy słowa formularza "\b".Pasuje do bieżącej pozycji w sekwencji docelowego jest natychmiast po granicy słowa.

  • A assert ujemne wyraz w formularzu "\B".Pasuje do bieżącej pozycji w sekwencji docelowej nie jest natychmiast po granicy słowa.

  • A dsw znak escape formularza "\d" "\D" "\s", "\S", "\w", "\W".Zawiera krótką nazwę klasy znaku.

Przykłady:

  • "(?:a)" odpowiada kolejności docelowych "", ale "(?:a) \1" jest nieprawidłowy, ponieważ nie istnieje żadna grupa przechwytywania 1.

  • "(?=a)" odpowiada kolejności docelowych "".Pozytywne assert odpowiada początkowy sekwencji "" w sekwencji docelowym i ostateczny "" w wyrażeniu regularnym dopasowuje początkowy sekwencji "" w kolejności docelowych.

  • "(?!) "nie pasuje do sekwencji docelowych"".

  • "a\b." odpowiada kolejności docelowych "~", ale nie pasuje do docelowego sekwencji "ab".

  • "a\B." odpowiada kolejności docelowych "ab" ale nie pasuje do sekwencji docelowych "~".

W awk, element może również być jedną z następujących czynności:

  • A escape format pliku z formularza "\\", "\a", "\b", "\f", "\n", "\r", "\t" lub "\v".Odpowiadają one odwrotnej kreski ukośnej, alert, backspace, znak wysuwu formularza, nowy wiersz, znak powrotu karetki, tabulator poziomy i tabulacji pionowej, odpowiednio, w kolejności docelowych.

  • Sekwencji unikowej ósemkową formularza "\ooo".Pasuje do znaku w kolejności docelowych, których przedstawienie jest wartością, reprezentowane przez jednego, dwóch lub trzech cyfr ósemkową ooo.

Bb982727.collapse_all(pl-pl,VS.110).gifPowtórzenia

Każdy element, innych niż potwierdzenia pozytywnych, negatywne potwierdzenia, lub kontrolnych może następować liczba powtórzeń.Najbardziej ogólnego rodzaju licznik powtórzeń ma postać "{min,max}", lub "\ {min,max\}" w BRE i grep.Element, który następuje przez niniejszy formularz licznik powtórzeń pasuje do co najmniej min kolejnych wystąpień i nie więcej niż max kolejnych wystąpień sekwencja, która odpowiada elementowi.Na przykład "{2,3}" odpowiada kolejności docelowych "aa" i sekwencja docelowych "aaa", ale nie docelowe sekwencji sekwencji docelowych "a" lub "aaaa".

Liczba powtórzeń również można wykonać jedną z następujących form:

  • "{min}", or "\{min\}" in BRE and grep.Equivalent to "{min,min}".

  • "{min,}", or "\{min,\}" in BRE and grep.Równoważne "{min, o nieokreślonej długości}".

  • "*".Odpowiednik "{0, nieokreślonej}".

Przykłady:

  • "{2}" pasuje sekwencji docelowych "aa", ale nie sekwencji docelowych sekwencji docelowych "a" lub "aaa".

  • "a {2}" odpowiada kolejności docelowych "aa", sekwencja docelowych "aaa" i tak dalej, ale nie pasuje sekwencji docelowych "".

  • "*" odpowiada kolejności docelowych "", obiekt docelowy sekwencji sekwencji docelowego "", "aa" i tak dalej.

Dla wszystkich grammars, z wyjątkiem BRE i grep, liczba powtórzeń również można wykonać jedną z następujących form:

  • "?".Odpowiednik "{0,1}".

  • "+".Odpowiednik "{1, o nieokreślonej długości}".

Przykłady:

  • "?" odpowiada kolejności docelowych "" i sekwencja docelowych "a", ale nie sekwencji docelowych "aa".

  • "+" pasuje sekwencji docelowych sekwencji docelowego "", "aa" i itd, ale nie sekwencji docelowych "".

W ECMAScript, wszystkie formy licznik powtórzeń może następować znak "?", który wyznacza - sowa powtarzania.

Bb982727.collapse_all(pl-pl,VS.110).gifKonkatenacja

Elementy wyrażenia regularnego, z lub bez liczby powtórzeń, może zostać dołączona do formularza dłużej wyrażeń regularnych.Wyrażenie będące wynikiem dopasowuje sekwencję docelowych konkatenacji sekwencji, które są dopasowywane przez poszczególne elementy."Na przykład, 2,3} b" odpowiada kolejności docelowych "Crystal" i sekwencja docelowych "aaab", ale nie pasuje sekwencji docelowych "ab" lub sekwencji docelowych "aaaab".

Bb982727.collapse_all(pl-pl,VS.110).gifAlternatywy

W wszystkie grammars wyrażenia regularnego, z wyjątkiem BRE i grep, są połączone wyrażenia regularnego może następować znak ' |' i innego łączone wyrażenia regularnego.W ten sposób można łączyć dowolną liczbę uzyskiwanej wyrażeń regularnych.Wyrażenie będące wynikiem odpowiada dowolnej sekwencji docelowego, który odpowiada jeden lub więcej wyrażeń regularnych uzyskiwanej.

Kiedy więcej niż jeden uzyskiwanej wyrażeń regularnych odpowiada kolejności docelowych ECMAScript wybiera pierwszy uzyskiwanej wyrażeń regularnych, który odpowiada sekwencji jako meczu (pierwszy mecz); inne grammars wyrażenia regularnego, wybierz ten, który uzyskuje Najdłuższy odpowiada.Na przykład "ab|cd" odpowiada kolejności docelowych "ab" i sekwencji docelowych "dysk cd", ale nie pasuje sekwencji docelowych "abd" lub sekwencji docelowych "acd".

W grep i egrep, znak nowego wiersza (\n) może służyć do oddzielania wyposażeniu.

Bb982727.collapse_all(pl-pl,VS.110).gifWyrażenia cząstkowego

W BRE i grep, wyrażenia cząstkowego jest tworzona przez złączenie.W innych grammars wyrażenia regularnego wyrażenia cząstkowego jest alternatywy.

Podsumowanie gramatyki

W następującej tabeli podsumowano funkcje, które są dostępne w różnych grammars wyrażenia regularnego, świadczone przez TR1:

Element

BRE

IMIĘ

ECMA

GREP

egrep

AWK

za pomocą alternatywy ' |'

+

+

+

+

alternatywy przy użyciu "\n"

+

+

zakotwiczenia

+

+

+

+

+

+

z powrotem odniesienia

+

+

+

wyrażenie nawias kwadratowy

+

+

+

+

+

+

Przechwytywanie grupy przy użyciu "()"

+

+

+

+

za pomocą grupy przechwytywania "\ (\)"

+

+

sekwencje sterowania

+

dsw znak escape

+

escape format pliku

+

+

szesnastkową sekwencję anulowania

+

escape tożsamości

+

+

+

+

+

+

ujemne assert

+

word ujemne granicy assert

+

Grupa — do przechwytywania

+

sowa powtarzania

+

sekwencji unikowej ósemkową

+

zwykłych znaków.

+

+

+

+

+

+

pozytywne assert

+

powtarzanie przy użyciu {"}"

+

+

+

+

za pomocą powtórzenia "\ {\}"

+

+

za pomocą powtórzenia ' *'

+

+

+

+

+

+

za pomocą powtórzenia '?' i '+'

+

+

+

+

Sekwencja Unicode

+

symbol wieloznaczny

+

+

+

+

+

+

Program Word granicy assert

+

Szczegóły semantyczne

Bb982727.collapse_all(pl-pl,VS.110).gifZakotwiczenia

Kotwica odpowiada pozycji w ciągu docelowych, a nie znak.A "^" pasuje do początku ciągu docelowym i '$' pasuje do końca ciągu docelowym.

Bb982727.collapse_all(pl-pl,VS.110).gifZ powrotem odniesienia

Wróć odwołanie jest znakiem odwrotnej kreski ukośnej, a po nim wartość dziesiętna N.Dopasowuje zawartość arytmetyczny Przechwytywanie grupy.Wartość n nie może być więcej niż liczba grup przechwytywania, które poprzedzają odwołanie Wstecz.W BRE i grep, wartość n jest określana przez cyfry dziesiętne, który następuje kreska ułamkowa odwrócona.W ECMAScript, wartość n jest określana przez wszystkich cyfr dziesiętnych, które natychmiast wykonaj kreska ułamkowa odwrócona.W związku z tym, w BRE i grep, wartość n nigdy nie jest więcej niż 9, nawet jeśli wyrażenie regularne zawiera więcej niż dziewięć grup przechwytywania.W ECMAScript, wartość n jest niepowiązany.

Przykłady:

  • "\3)(c+) ((a+) (b +)" odpowiada kolejności docelowych "aabbbcbbb".Odwołanie Wstecz "\3" pasuje do tekstu z trzeciej grupy przechwytywania, to znaczy "(b+)".Sekwencja docelowych "aabbbcbb" nie pasuje.

  • "() \2" nie jest prawidłowy.

  • "\10 (b ((((((((())))))))))" ma różne znaczenie w BRE i w ECMAScript.W BRE back odwołanie jest "\1".Wróć odniesienia dopasowuje zawartość pierwszej grupy przechwytywania (czyli ten, który zaczyna się od "(b" i kończy wraz z końcowym ")" i znajduje się przed tylnym odniesienia), i końcowe "0"odpowiada zwykłych znaków "0".W ECMAScript, tylnym odwołanie jest "\10".Dopasowuje dziesiąty grupy przechwytywania, to znaczy znajdujące się najniżej jeden.

Bb982727.collapse_all(pl-pl,VS.110).gifWyrażenie nawias kwadratowy

Wyrażenie nawias definiuje zestaw znaków i Sortowanie elementów.Gdy wyrażenie nawias zaczyna się od znaku "^" dopasowanie powiedzie się, jeśli bieżący znak w kolejności docelowych pasują do siebie żadnych elementów w zestawie.W przeciwnym razie dopasowanie powiedzie się, jeśli jeden z elementów w zestawie pasuje do bieżącego znaku w kolejności docelowych.

Zestaw znaków można zdefiniować dowolną kombinację aukcji poszczególnych znaków, zakresy znaków, klasy znaku, klasy równoważności, i zestawiania symbole.

Bb982727.collapse_all(pl-pl,VS.110).gifGrupa przechwytywania

Grupa przechwytywania oznacza jego zawartość jako pojedynczą jednostkę w gramatyki wyrażenia regularnego i etykiety tekst docelowy, który odpowiada jego zawartość.Etykiety, która jest skojarzona z każdej grupy przechwytywania jest liczbą, określany przez liczenie nawiasy otwierające, oznaczające przechwytywania do grup i tym nawias otwierający, że znaki bieżącej grupy przechwytywania.W tej implementacji maksymalną liczbę grup przechwytywania jest 31.

Przykłady:

  • "ab +" odpowiada kolejności docelowych "abb", ale nie pasuje do docelowego sekwencji "abab".

  • "(ab) +" nie pasuje do docelowego sekwencji "abb", ale dopasowuje sekwencję docelowych "abab".

  • "((a+)(b+))(c+)" matches the target sequence "aabbbc" and associates capture group 1 with the subsequence "aabbb", capture group 2 with the subsequence "aa", capture group 3 with "bbb", and capture group 4 with the subsequence "c".

Bb982727.collapse_all(pl-pl,VS.110).gifKlasy znaku

Klasy znaku w wyrażeniu nawias dodaje wszystkie znaki w klasie nazwanych do zestawu znaków, który jest zdefiniowany przez wyrażenie nawiasu.Aby utworzyć klasę znaku, należy użyć "[:" występującym po nazwie klasy następuje ":".Wewnętrznie, są rozpoznawane nazwy klasy znaku, wywołując id = traits.lookup_classname.Znak ch należy do takich klasy traits.isctype(ch, id) zwraca wartość true.Domyślnie regex_traits szablon obsługuje nazwy klasy w poniższej tabeli.

Nazwa klasy

Opis

"alnum"

małych liter, wielkich liter i cyfr

"alfa"

litery małe i wielkie litery

"pusty"

SPACJA lub tabulator

"a"

escape format pliku znaków

"cyfra"

cyfry

"wykres"

małych liter, wielkich liter, cyfr i znaków interpunkcyjnych

"dolna"

małe litery

"Drukowanie"

małe litery, wielkie litery, cyfry, znaki interpunkcyjne i miejsca

"punct"

znaki interpunkcyjne

"space"

miejsca

"górny

wielkie litery

"xdigit"

cyfry, byłoby "", "b", "c", ","e","f","A"'B', 'C' 'D', 'E', 'F'

"d"

takie same jak cyfra

"s"

takie same, jak miejsce

"w"

takie same, jak alnum

Bb982727.collapse_all(pl-pl,VS.110).gifZakres znaków

Zakres znaków w wyrażeniu nawias dodaje wszystkie znaki w zakresie do zestawu znaków, który jest zdefiniowany przez wyrażenie nawiasu.Aby utworzyć zakres znaków, należy umieścić znak "-" między pierwszych i ostatnich znaków z zakresu.W ten sposób powoduje umieszczenie w zestawie wszystkie znaki, które mają wartość liczbowa, która jest więcej niż lub równa wartości liczbowe pierwszego znaku i mniejsza lub równa wartości liczbowe ostatni znak.Należy zauważyć, że ten zestaw znaków dodano zależy od platformy reprezentacji znaków.Jeśli znak "-" występuje na początku lub na końcu wyrażenia nawias lub jako pierwszy lub ostatni znak zakresu znaków reprezentuje on sam.

Przykłady:

  • "[0-7]" reprezentuje zestaw znaków {"0", "1", "2", "3", "4", "5", "6", "7"}.Pasuje do obiektu docelowego sekwencje "0", "1" i tak dalej, ale nie "".

  • W systemach używających ASCII kodowanie znaków, "[h-k]" oznacza zestaw znaków {'h', 'i', 'j', 'k'}.Pasuje do docelowego sekwencji "h", "i" i tak dalej, ale nie "\x8A" lub "0".

  • W systemach używających EBCDIC kodowanie znaków, "[h-k]" oznacza zestaw znaków {'h', 'i', '\x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F', '\x90', 'j', 'k'} ('h' jest zakodowany jako 0x88 i 'k' jest zakodowany jako 0x92).Pasuje do docelowego sekwencji "h", "i", "\x8A" i tak dalej, ale nie "0".

  • "[24 - 0-]" reprezentuje zestaw znaków {"-", "0", "1", "2", "4"}.

  • "[0 - 2-]" reprezentuje zestaw znaków {"0", "1", "2", "-"}.

  • W systemach, które używają kodowania znaków ASCII, "[+--]" reprezentuje zestaw znaków {'+ ',',', '-'}.

Jednakże gdy używane są zależne od ustawień regionalnych zakresy znaków w zakresie są określane przez reguły sortowania dla ustawień regionalnych.Znaki, które przed ostatnim znakiem w definicji zakresu są w zestawie i poskładaj je po pierwszy znak w definicji zakresu.Koniec dwa znaki są również w zestawie.

Bb982727.collapse_all(pl-pl,VS.110).gifSortowanie elementów

Element sortowania jest multi-character sekwencji, który jest traktowany jako pojedynczy znak.

Bb982727.collapse_all(pl-pl,VS.110).gifSymbol sortowania

Dodaje symbol sortowania w wyrażeniu nawias zestawiania elementu do zestawu, który jest zdefiniowany przez wyrażenie nawiasu.Aby utworzyć symbol sortowania, należy użyć "[." następuje sortowania element, a następnie operator ".".

Bb982727.collapse_all(pl-pl,VS.110).gifSekwencje sterowania

Sekwencji unikowej kontroli jest znakiem odwrotnej kreski ukośnej następuje symbol "c", po której następuje jedna z literami '' do 'z' lub 'A' do 'Z'.Dopasowuje znak kontrolny ASCII o nazwie przez tę literę.Na przykład, "\ci" odpowiada kolejności docelowych "\x09", ponieważ < ctrl-i > ma wartość 0x09.

Bb982727.collapse_all(pl-pl,VS.110).gifDSW znak Escape

Escape znak dsw jest krótką nazwę klasy znaku, jak pokazano w poniższej tabeli.

Sekwencja unikowa

Równoważne o nazwie klasy

Domyślny o nazwie klasy

"\d"

"[[:d:]]"

"[[: cyfra:]]"

"\D"

"[^[:d:]]"

"[^ [: cyfra:]]"

"\s"

"[[:s:]]"

"[[: miejsce:]]"

"\S"

"[^[:s:]]"

"[^ [: miejsce:]]"

"\w."

"[[:w:]]"

"[a-zA-Z0-9_]" *

"\W."

"[^[:w:]]"

"[^ a-zA-Z0-9_]" *

* Zestaw znaków ASCII

Bb982727.collapse_all(pl-pl,VS.110).gifKlasa równoważności

Klasy równoważności w wyrażeniu nawias dodaje wszystkie znaki i Sortowanie elementów , są równoważne do sortowania elementów w definicji klasy równoważności do zestawu, który jest zdefiniowany przez wyrażenie nawiasu.Aby utworzyć klasę równoważności, należy użyć "[=" następuje element sortowania, następuje "=]".Wewnętrznie, dwa elementy sortowania elt1 i elt2 są równoważne Jeśli traits.transform_primary(elt1.begin(), elt1.end()) == traits.transform_primary(elt2.begin(), elt2.end()).

Bb982727.collapse_all(pl-pl,VS.110).gifEscape Format pliku

Escape format pliku składa się z sekwencji unikowych znak zwykły języka C, "\\", "\a", "\b", "\f", "\n", "\r", "\t", "\v".Mają one znaczenie zwykłymi, oznacza to, ukośnik odwrotny, alert, backspace, znak wysuwu formularza, nowy wiersz, znak powrotu karetki, tabulator poziomy i tabulacji pionowej odpowiednio.W ECMAScript, "\a" i "\b" nie są dozwolone.("\\" jest dozwolone, ale jest ucieczki tożsamości, nie escape formatu pliku).

Bb982727.collapse_all(pl-pl,VS.110).gifSzesnastkową sekwencję anulowania

Szesnastkową sekwencję anulowania jest ukośnikiem odwrotnym i przez symbol "x", po której następuje dwóch cyfr szesnastkowych (0-9a-fA-F).Dopasowuje znak zgodnie z sekwencją docelowy ma wartość jest określona przez dwie cyfry.Na przykład "\x41" odpowiada sekwencji docelowych "A", gdy używane jest kodowanie znaków ASCII.

Bb982727.collapse_all(pl-pl,VS.110).gifEscape tożsamości

Escape tożsamości jest ukośnikiem odwrotnym i przez pojedynczy znak.Dopasowuje znak.Jest wymagane, gdy znak ma specjalne znaczenie; za pomocą escape tożsamości, specjalne znaczenie jest usuwany.Na przykład:

  • "*" odpowiada kolejności docelowych "aaa", ale nie pasuje sekwencji docelowych "*".

  • "a\ *" nie pasuje do docelowego sekwencji "aaa", ale dopasowuje sekwencję docelowych "*".

Zestaw znaków, które są dozwolone w escape tożsamość zależy od gramatyki wyrażenia regularnego, jak pokazano w poniższej tabeli.

Gramatyka

Dozwolone znaki Escape tożsamości

BRE, grep

{ '(', ')', '{', '}', '.', '[', '\', '*', '^', '$' }

ERE, egre

{ '(', ')', '{', '.', '[', '\', '*', '^', '$', '+', '?', '|' }

awk

EREplus {"" ","/"}

ECMAScript

Wszystkie znaki z wyjątkiem tych, które mogą być częścią identyfikatora.Zazwyczaj zawiera litery, cyfry, '$', '_' i sekwencje escape unicode.Więcej informacji na ten temat można znaleźć w specyfikacji języka ECMAScript.

Bb982727.collapse_all(pl-pl,VS.110).gifIndywidualny charakter

Indywidualnego charakteru w wyrażeniu nawias dodaje tego znaku do zestawu znaków, który jest zdefiniowany przez wyrażenie nawiasu.W dowolnym miejscu w wyrażeniu nawias, z wyjątkiem na początku "^" reprezentuje sam.

Przykłady:

  • "[abc]" odpowiada sekwencji docelowych "a", "b" i "c", ale nie sekwencji "d".

  • "[^ abc]" odpowiada sekwencji docelowych "d", ale nie sekwencji docelowych "a", "b" lub "c".

  • "[^ p.n.e.]" odpowiada sekwencji docelowych "a", "b", "c", i "^", ale nie sekwencji docelowych "d".

W wszystkie grammars wyrażenia regularnego, z wyjątkiem ECMAScript, jeśli ']' jest pierwszego znaku, który następuje otwarcie ' [' lub pierwszego znaku, który następuje początkowego "^", reprezentuje on sam.

Przykłady:

  • "[]" jest nieprawidłowy, ponieważ nie ma żadnych "]" pozwala zakończyć wyrażenie nawias.

  • "abc] []" odpowiada sekwencji docelowych "a", "b", "c" i "]", ale nie sekwencji docelowych "d".

  • "^ abc]" odpowiada sekwencji docelowych "d", ale nie sekwencji docelowych "a", "b", "c" lub "]".

W ECMAScript, użyj ' \]' do przedstawienia znaku ']' w wyrażeniu nawiasu.

Przykłady:

  • "[]" odpowiada kolejności docelowych "", ponieważ wyrażenie nawias jest pusty.

  • "[\]abc]" odpowiada sekwencji docelowych "a", "b", "c" i "]", ale nie sekwencji docelowych "d".

Bb982727.collapse_all(pl-pl,VS.110).gifUjemne Assert

Ujemne assert wszystko ale jego zawartość.Nie zużywa w wszystkie znaki w sekwencji docelowych.Na przykład, "(?aa)(a*) "odpowiada kolejności docelowych""i stowarzyszonych przechwytywania grupy 1 z podciąg"".Nie pasuje sekwencji docelowych "aa" lub sekwencji docelowych "aaa".

Bb982727.collapse_all(pl-pl,VS.110).gifUjemne Assert granicy słowa

Assert granicy ujemne word dopasowuje Jeśli bieżąca pozycja w ciągu docelowej nie jest natychmiast po granicy słowa.

Bb982727.collapse_all(pl-pl,VS.110).gifGrupa — do przechwytywania

Grupy przechwytywania nie oznacza jego zawartość jako pojedynczą jednostkę w gramatyki wyrażenia regularnego, ale nie etykiety tekstu docelowego.Na przykład "(a)(?:b)*(c) pasuje do tekstu docelowego"abbc"i stowarzyszonych przechwytywania grupy 1 z podciąg""i przechwytywania grupy 2 z podciąg"c".

Bb982727.collapse_all(pl-pl,VS.110).gifSowa powtarzania

Sowa powtarzania zużywa najkrótszej podciąg sekwencji docelowego, który pasuje do wzorca.Powtórzenia intensywnie używa najdłużej.Na przykład, "(a+)(a*b)" odpowiada docelowym sekwencji "aaab".W przypadku powtórzenia sowa kojarzy przechwytywania grupy 1 z podciąg "a" na początku docelowym sekwencji i przechwytywania grupy 2 z podciąg "Crystal" na końcu sekwencji docelowych.Użyto sowa dopasowanie kojarzy przechwytywania grupy 1 z podciąg "aaa" i przechwytywania grupy 2 z podciąg "b".

Bb982727.collapse_all(pl-pl,VS.110).gifSekwencji unikowej ósemkową

Sekwencji unikowej ósemkową jest ukośnikiem odwrotnym i przez jeden, dwa lub trzy ósemkową cyfry (0-7).Dopasowuje znak zgodnie z sekwencją docelowy ma wartość jest określona przez te cyfry.Jeśli wszystkie cyfry "0", sekwencja jest nieprawidłowa.Na przykład "\101" odpowiada sekwencji docelowych "A", gdy używane jest kodowanie znaków ASCII.

Bb982727.collapse_all(pl-pl,VS.110).gifZwykłych znaków.

Zwykły znak jest nieprawidłowym znakiem, który nie ma specjalne znaczenie w bieżącym gramatyki.

W ECMAScript, następujące znaki mają specjalne znaczenie:

  • ^ $ \ .* + ?( ) [ ] { } |

W BRE i grep, następujące znaki mają specjalne znaczenie:

  • .[ \

Również w BRE i grep, następujące znaki mają specjalne znaczenie, gdy są one używane w szczególnym kontekście:

  • ' *' ma specjalne znaczenie we wszystkich przypadkach, z wyjątkiem przypadków, kiedy jest pierwszy znak w wyrażeniu regularnym lub pierwszego znaku, który następuje początkowego "^" w wyrażeniu regularnym, lub gdy jest pierwszy znak grupy przechwytywania lub pierwszego znaku, który następuje początkowego "^" w grupie przechwytywania.

  • "^" ma specjalne znaczenie, gdy jest to pierwszy znak wyrażenia regularnego.

  • '$' ma specjalne znaczenie, gdy jest to ostatni znak wyrażenia regularnego.

W ERE, egrep, i awk, następujące znaki mają specjalne znaczenie:

  • .[ \ ( * + ?{ |

Również w ERE, egrep, i awk, następujące znaki mają specjalne znaczenie, gdy są one używane w szczególnym kontekście.

  • ')' ma specjalne znaczenie, gdy jest ona zgodna z poprzednim '('.

  • "^" ma specjalne znaczenie, gdy jest to pierwszy znak wyrażenia regularnego.

  • '$' ma specjalne znaczenie, gdy jest to ostatni znak wyrażenia regularnego.

Zwykły znak pasuje do tego samego znaku w kolejności docelowych.Domyślnie oznacza to, że dopasowanie powiedzie się, jeśli dwa znaki są reprezentowane przez tę samą wartość.W polu Dopasuj bez uwzględniania wielkości liter, dwa znaki ch0 i ch1 odpowiadać, jeśli traits.translate_nocase(ch0) == traits.translate_nocase(ch1).W polu Dopasuj zależne od ustawień regionalnych, dwa znaki ch0 i ch1 odpowiadać, jeśli traits.translate(ch0) == traits.translate(ch1).

Bb982727.collapse_all(pl-pl,VS.110).gifPozytywne Assert

Pozytywne assert pasuje do jego zawartości, ale nie zużywa wszystkie znaki w sekwencji docelowych.

Przykłady:

  • "(? = aa)(a*)"odpowiada kolejności docelowych "aaaa" i kojarzy grupę przechwytywania 1 z podciąg "aaaa".

  • "(aa)(a*)" matches the TARGET Sequence "AAAA" and Associates Capture Group 1 with the subsequence "AA" at the beginning of the TARGET Sequence and Capture Group 2 with the subsequence "AA" at the End of the TARGET Sequence.

  • "(?=aa) () |() "odpowiada kolejności docelowych""i stowarzyszonych przechwytywania grupy 1 z sekwencji puste (ponieważ nie powiodło się pozytywne assert) i składnika Przechwytywanie zawartości grupy 2 podciąg"".Również odpowiada kolejności docelowych "aa" i kojarzy grupę przechwytywania 1 z podciąg "aa" i przechwytywania grupy 2 o sekwencji puste.

Bb982727.collapse_all(pl-pl,VS.110).gifSekwencja Unicode Escape

Sekwencja escape unicode jest ukośnikiem odwrotnym i pismem 'u', po której następują cztery szesnastkowe cyfry (0-9a-fA-F).Dopasowuje znak zgodnie z sekwencją docelowy ma wartość jest określona przez cztery cyfry.Na przykład "\u0041" odpowiada sekwencji docelowych "A", gdy używane jest kodowanie znaków ASCII.

Bb982727.collapse_all(pl-pl,VS.110).gifSymbol wieloznaczny

Symbol wieloznaczny reprezentuje dowolny znak w wyrażeniu docelowych, z wyjątkiem nowego wiersza.

Bb982727.collapse_all(pl-pl,VS.110).gifOgranicznik słowa

Ogranicznik słowa występuje w następujących sytuacjach:

  • Bieżący znak znajduje się na początku sekwencji docelowego i jest jednym z znaki programu wordA-Za-z0-9_.

  • Bieżąca pozycja znaku jest koniec sekwencji docelowych i ostatni znak w sekwencji docelowego jest jeden ze znaków program word.

  • Bieżący znak jest jeden ze znaków program word i poprzedni znak nie jest.

  • Bieżący znak nie jest jeden ze znaków program word i znaku poprzedzającego.

Bb982727.collapse_all(pl-pl,VS.110).gifProgram Word granicy Assert

Assert granicy word pasuje do bieżącej pozycji w ciągu docelowego jest natychmiast po granicy słowa.

Dopasowywanie i wyszukiwanie

Wyrażenie regularne dopasuje sekwencji docelowych całe wyrażenie regularne musi odpowiadać sekwencji całego docelowych.Na przykład wyrażenie regularne "bcd" odpowiada kolejności docelowych "bcd", ale nie pasuje sekwencji docelowych "abcd" ani sekwencji docelowych "bcde".

Wyszukiwanie wyrażeń regularnych, została wykonana pomyślnie musi istnieć podciąg gdzieś w sekwencji docelowego, który odpowiada wyrażeniu regularnemu.Funkcja wyszukiwania znajdzie zazwyczaj lewego podciąg dopasowywania.

Przykłady:

  • Wyszukaj wyrażenie regularne "bcd" w kolejności docelowych "bcd" zakończy się pomyślnie i odpowiada całej sekwencji.Takie same wyszukiwania w kolejności docelowych "abcd" również zakończy się pomyślnie i dopasowuje ostatnie trzy znaki.Tym samym wyszukiwania w kolejności docelowych "bcde" również zakończy się pomyślnie i dopasowuje pierwsze trzy znaki.

  • Wyszukaj wyrażenie regularne "bcd" w kolejności docelowych "bcdbcd" zakończy się pomyślnie i dopasowuje pierwsze trzy znaki.

Jeśli istnieje więcej niż jeden podciąg, odpowiadający niektórych lokalizacji w kolejności docelowych, może wybrać wzorzec dopasowania na dwa sposoby.Pierwszy mecz wybiera podciąg, który został znaleziony po pierwsze, gdy wyrażenie regularne jest dopasowane.Najdłuższy odpowiada wybiera najdłuższy podciąg od tych, które odpowiadają w tej lokalizacji.Jeśli istnieje więcej niż jeden podciąg, który ma długość maksymalna, dopasowanie najdłuższy wybiera jeden, który został znaleziony, najpierw.Na przykład gdy używany jest pierwszy mecz, wyszukaj wyrażenie regularne "b|bc", w kolejności docelowych "abcd" dopasowuje podciąg "b" ponieważ lewostronnego kadencji alternatywy odpowiada tym podciąg; w związku z tym pierwszego dopasowania nie próbuj prawej kadencji alternatywy.Użyto najdłuższy dopasowanie samego wyszukiwania dopasowuje "p.n.e." ponieważ "p.n.e." jest dłuższa niż "b".

Częściowe dopasowanie powiedzie się, jeśli mecz osiągnie koniec sekwencji docelowych niezawodnie, nawet wtedy, gdy nie osiągnęła koniec wyrażenia regularnego.W związku z tym po pomyślnym zainicjowaniu dopasowania częściowego, dołączanie znaków w sekwencji docelowych może spowodować, że później dopasowania częściowego niepowodzenie.Jednak po częściowe dopasowanie nie powiedzie się, dołączanie znaków w sekwencji docelowych nie może spowodować później dopasowania częściowego powiodła się.Na przykład częściowego dopasowania, "ab" dopasowuje sekwencję docelowych "a", ale nie "ac".

Format flagi

Zasady Format języka ECMAScript

sed formatu reguł

Tekst zastępczy

"$ &"

"&"

Sekwencja znaków, który odpowiada całe wyrażenie regularne ([match[0].first, match[0].second))

"$$"

"$"

 

"\ &"

"&"

"$" "(znak dolara następuje oferty wstecz)

 

Sekwencja znaków, który poprzedza podciąg, który odpowiada wyrażeniu regularnemu ([match.prefix().first, match.prefix().second))

"$" "(znak dolara następuje oferty do przodu)

 

Sekwencja znaków, który następuje podciąg, który odpowiada wyrażeniu regularnemu ([match.suffix().first, match.suffix().second))

"$ n"

"\n"

Sekwencja znaków, odpowiadający grupie przechwytywania w pozycji n, gdzie n jest liczbą od 0 do 9 ()[match[n].first, match[n].second)

 

"\\n"

"\n"

"$ nn"

 

Sekwencja znaków, odpowiadający grupie przechwytywania w pozycji nn, gdzie nn jest liczbą z przedziału od 10 do 99 ([match[nn].first, match[nn].second)

Zobacz też

Informacje

Standardowa biblioteka C++ Przegląd