Latest web development tutorials

Wyrażenia regularne - Składnia

Regex (wyrażenie regularne) opisuje zbiór łańcuchów, które można wykorzystać do sprawdzenia, czy ciąg zawiera określony podciąg pasujący podciąg zastępują lub usunąć warunek dopasowuje podciąg z ciągiem i tak dalej.

  • Katalog kolumna dir * .txt ls * .txt lub * .txt nie jest w wyrażeniu regularnym, ponieważ * jest * o wyrażenie regularne czyli jest inna.
  • Sposób konstruowania wyrażeń regularnych i tworzenie wyrażeń matematycznych w ten sam sposób. Oznacza to, że za pomocą różnych metaznakami i operatorzy mogą łączyć małe wyrażeń ze sobą, tworząc większe wyrażeń. Składowe wyrażenia regularne mogą być pojedynczym znakiem, zestaw znaków, należy wybrać zakres znaków, między postaciami, lub dowolnej kombinacji wszystkich tych elementów.

Wyrażenia regularne są w trybie tekstowym składa się ze zwykłych znaków (takich jak litery od A do Z) i znaków specjalnych (nazywane "meta-znaki") tego rozporządzenia. Opis trybu podczas wyszukiwania tekstu, aby dopasować jeden lub więcej ciągów. Wyrażenie regularne jako szablon, w trybie tekstowym i ciąg wyszukiwania, aby dopasować.

zwykli bohaterowie

Zwykli bohaterowie nie są wyraźnie oznaczone jako metaznakami wszystkie druku oraz niedrukowalne znaki. Obejmuje to wszystkie wielkie i małe litery, cyfry, wszystkie wszystkie znaki interpunkcyjne i inne symbole.

Znaki Niedrukowane

Znaki Niedrukowane może być również część wyrażenia regularnego. Poniższa tabela zawiera sekwencje specjalne, które reprezentują znaki inne niż druk:

字符 描述
\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。

znaki specjalne

Tak zwane znaki specjalne, jest to, że niektóre znaki mają specjalne znaczenie, jak mówi "* .txt" in *, oznacza po prostu, że reprezentacja ciąg jakiegokolwiek znaczenia. Jeśli chcesz znaleźć nazwę pliku z pliku *, trzeba uciec *, to jest plus w przód \. ls \ *. txt.

Wiele metaznakami wymagają specjalnego traktowania, gdy próbuje je dopasować. Aby dopasować te znaki specjalne, należy najpierw dokonać znaku "Escape", czyli znak backslash (\) przed nimi. Poniższa tabela zawiera listę znaków specjalnych regularnych wyrażeń:

特别字符 描述
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
. 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。
{ 标记限定符表达式的开始。要匹配 {,请使用 \{。
| 指明两项之间的一个选择。要匹配 |,请使用 \|。

kwalifikator

Qualifier jest używany do określenia wyrażenia regularnego danego składnika musi pojawić się wiele razy, aby spotkać się mecz. Nie * lub + lub? Albo {n} lub {n,} lub {n, m} w sumie 6.

Wyrażenia regularne kwalifikacyjne są następujące:

字符 描述
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

Od numeru rozdziału w dużej dokumentu wejściowego będzie prawdopodobnie więcej niż dziewięć lat, więc trzeba sposobem radzenia sobie z dwoma lub trzema numerami rozdziałów. Qualifier daje tę możliwość. Poniższe wyrażenie regularne dopasowuje dowolną liczbę bitów ponumerowanych tytuły rozdziałów:

/Chapter [1-9][0-9]*/

Należy pamiętać, że kwalifikator po wyrażeniu zasięgu pojawi. Tak więc, obejmuje cały zakres ekspresji, w tym przypadku, tylko określoną liczbę 0-9 (w tym od 0 do 9).

+ Kwalifikacyjny nie stosuje się tutaj, że w drugim położeniu i w tylnym położeniu nie muszą koniecznie mieć numer. Nie używać? Charakter, ponieważ ogranicza numery rozdziałów do dwóch cyfr. Trzeba dopasować co najmniej jeden numer rozdziału i kosmiczne znaki powrotem.

Jeśli znasz numer rozdziału jest ograniczona do zaledwie 99 rozdziałów, można użyć następującego wyrażenia, aby określić co najmniej jeden, ale co najmniej dwie cyfry.

/Chapter [0-9]{1,2}/

Wadą powyższego wyrażenia jest większa niż 99 rozdziałów wciąż tylko numer dopasowuje początek dwie cyfry. Inną wadą jest to, że rozdział 0 będzie również pasować. Lepsze dopasowanie tylko dwóch cyfr wyrazu przedstawia się następująco:

/Chapter [1-9][0-9]?/

lub

/Chapter [1-9][0-9]{0,1}/

*, +, A? Kwalifikacje są chciwi, ponieważ odpowiadają one za dużo tekstu, tylko za nimi, a także? Można osiągnąć bez chciwy lub minimalną mecz.

Na przykład, można wyszukiwać dokumenty HTML, aby znaleźć się w zamkniętych H1 nagłówków sekcji tagi. Tekst w dokumencie w następujący sposób:

<H1>Chapter 1 – Introduction to Regular Expressions</H1>

Cała zawartość dopasować następujące wyrażenia zaczynające się od mniej niż znak (<), aby zamknąć tag H1 jest większa niż symbol (>) między nimi.

/<.*>/

Jeśli tylko trzeba dopasować początek znaczników H1, co następuje: "non-chciwych" wyrażenie pasuje tylko <h1>.

/<.*?>/

Przez *, + lub? Po miejscu kwalifikatorem? Wyrażenia można przełączyć z "zachłanny" do "nie-chciwy" lub minimalne dopasowywanie ekspresji.

lokalizator

Lokalizator umożliwia wyrażenie regularne jest ustalona na początku lub na końcu linii. Pozwalają one także na stworzenie takiego wyrażenia regularnego, te wyrażenia regularne pojawiają się słowa, słowa na początku lub na końcu wyrazu.

Lokalizator używany do opisania lub ciąg słów granicę, ^ i $ odnoszą się do początku i na końcu łańcucha, \ b Opis granica przed lub po słowie \ B stanowi granicę, nie słowa.

Wyrażenia regularne kwalifikacyjne są następujące:

字符 描述
^ 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后的位置匹配。
$ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配。
\b 匹配一个字边界,即字与空格间的位置。
\B 非字边界匹配。

Uwaga: Nie można użyć punktu kwalifikator i kotwicy. Ponieważ bezpośrednio przed lub po granicach zapakowanie lub słowo nie może mieć więcej niż jedną lokalizację, a zatem nie pozwala na takie wyrażenia jak ^ *.

Aby dopasować linię tekstu na początku tekstu, należy rozpocząć przy użyciu wyrażenia n ^ charakter. ^ Nie używaj tego użyć wyrażenia w nawiasach w błąd.

Aby dopasować tekst na końcu linii tekstu, patrz koniec wyrażenia użycie $ znaków w pozytywne.

Aby skorzystać z nagłówków sekcji w poszukiwaniu gdy punkt kotwica, poniższe wyrażenie regularne dopasowuje tytuł rozdziału, tytuł zawiera tylko dwa, a następnie przez kilka, a początek linii:

/^Chapter [1-9][0-9]{0,1}/

Prawdziwe tytuły rozdziałów pojawiają się tylko na początku linii, ale jest to jedyny tekst w wierszu. Wydaje się, że linia pierwszy pojawiły się pod koniec tego samego rzędu. Poniższe wyrażenie może być pewien, że określony z meczu tylko bez dopasowania do sekcji odsyłaczy. Tworząc tylko odpowiednio początek i koniec wiersza tekstu wyrażenia regularnego, można to zrobić.

/^Chapter [1-9][0-9]{0,1}$/

Granica słowo Mecz jest nieco inna, ale wyrażenia regularne to bardzo ważna funkcja. Granica Word to miejsce, a przestrzeń między słowami. Granica dla słowo jest w dowolnym innym miejscu. Poniższe wyrażenie dopasowuje początek słowa Rozdział trzech postaci, ponieważ te trzy znaki pojawiają się po granicy słowa:

/\bCha/

\ Pozycja znaku B jest bardzo ważne. Jeśli znajduje się na początku łańcucha być dopasowane, wygląda na dopasowanie w początku słowa. Jeśli znajduje się na końcu łańcucha, wygląda na meczu na końcu słowa. Na przykład następujące wyrażenie pasujące słowa Rozdział ciąg ter, ponieważ pojawia się przed granicy słowa:

/ter\b/

Poniższe wyrażenie dopasowuje ciąg Rozdział apt, ale nie pasuje do umiejętności ciąg apt:

/\Bapt/

Apt słowo ciąg pojawia się w rozdziale zakaz granicy wyrazu, ale słowo pojawia się w zdolności do granicy słowa. Dla \ b non-word operatora granicznej, pozycja nie jest ważne, bo mecz nie obchodzi czy jest na początku lub na końcu wyrazu.

wybierać

Użyj nawiasów aby zamknąć wszystkie pozycje z opcji pomiędzy sąsiednimi oddzielone |. Ale jest efektem ubocznym stosowania nawiasów jest istotne mecze będą buforowane, dostępne w tym czasie :? na pierwszej opcji, aby wyeliminować ten efekt uboczny.

Gdzie :? dla przechwytywania jeden element, istnieją dwa zakaz robienia element to = a dwa mają większe znaczenie, były Pozytywna wstępnego dochodzenia, w każdym starcie są dopasowane nawiasów jest wyrazem ??! pozycyjna wzór dopasować wyszukiwany ciąg, który jest ujemny wstępne dochodzenie, w dowolnej pozycji startowej nie pasuje do wzorca wyrażenia regularnego pasujące ciąg wyszukiwania.

wsteczne

Przez regularny wzór ekspresji lub części struktury po obu stronach spowoduje dodanych nawiasach odpowiednie dopasowanie do buforu do przechowywania tymczasowego, każdy pod wychwytywane są w kolejności od lewej do prawej meczu pojawiają się w regularny wzór ekspresji. Bufor nr 1 od początku, może pomieścić do 99 przechwyconego podwyrażenie. Każdy bufor może używać '\ n' Wizyta, gdzie n jest jedna lub dwie cyfry dziesiętne zidentyfikować konkretny bufor.

Można używać non-przechwytywanie metaznaki ":?" lub przepisać schwytania, zapisać się ignorować odpowiednie dopasowanie '=?'? '.

Wstecznych najprostszy, jeden z najbardziej użytecznych jest możliwość dostarczenia tekstu do znalezienia dwóch identycznych sąsiadujących mecze słów. Przykładem w następnym zdaniu:

Is is the cost of of gasoline going up up?

Powyższe zdanie oczywiście mają wiele powtarzających się słów. Jeśli uda nam się opracować metodę, aby zlokalizować zdanie, zamiast znaleźć zduplikowane wystąpień każdego słowa, że ​​więcej dobrego. Poniższe wyrażenie regularne używa pojedynczego podwyrażeń do osiągnięcia tego celu:

/\b([a-z]+) \1\b/gi

Przechwytywanie wyrażenia, jak [az] + podano, w tym jednej lub więcej liter. Druga część tego wyrażenia jest dopasowanie podrzędny wcześniej przechwycony odniesienia, to znaczy w drugim wystąpieniu słowa tak dopasowane wyrażenia w nawiasach. \ 1 określa akapicie pierwszym meczu. Słowo metaznakami brzegowych zapewnić, że tylko wykryć całego słowa. W przeciwnym razie, wyrażeń takich jak "wydawana jest" lub "to" i tym podobne nie są prawidłowo zidentyfikować tego wyrażenia.

Wyrażenie regularne po tagu globalne (G) oznacza wyrażenie to jest stosowane do ciągu wejściowego można znaleźć jak najwięcej meczów. Sprawa Expression niewrażliwe na końcu (i) tag określa wielkości liter. Potencjał meczu tag multi-line określa podziały wiersza może nastąpić po obu stronach.

Wsteczne może być również uniwersalny wskaźnik zasobów (URI) na jego składniki. Załóżmy, że chcemy być podzielone na następujące protokołu URI (FTP, HTTP, etc.), adresy domen i stron / ścieżki:

http://www.w3cschool.cc:80/html/html-tutorial.html

Poniższe wyrażenie regularne zapewnia taką funkcjonalność:

/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/

Pierwszy nawias podwyrażenie oddaje część protokołu adresu WWW. Podwyrażenie dopasowuje dowolny wyraz dwukropek i dwa ukośniki przodu. Drugi nawias podwyrażenie oddaje część adresu domeny adresu. Jeden lub więcej znaków innych niż: podwyrażenie meczu / i. Trzeci nawias podwyrażenie uchwycić numer portu (jeśli jest określony). Sub-wyrażenie dopasowuje zero lub więcej cyfr po dwukropku. Może to być powtarzane tylko raz z grupą ekspresji. Wreszcie czwarta nawias podwyrażenie przechwytuje podanej ścieżce adresu internetowego i / lub stronę. Nie dotyczy to sub-wyrażenie pasuje do dowolnej sekwencji znaków # lub kosmiczne znaki.

Wyrażenie regularne stosuje się do powyższych URI, pozycja sub-matching zawiera następujące elementy:

  • Pierwszy nawias podwyrażenie zawiera "http"
  • Drugi nawias podwyrażenie zawiera "www.w3cschool.cc"
  • Trzeci nawias podwyrażenie przez ": 80"
  • Czwarty nawias podwyrażenie zawiera "/html/html-tutorial.html"