Latest web development tutorials

Reguläre Ausdrücke - Syntax

Regex (regulärer Ausdruck) beschreibt eine Reihe von Strings, die verwendet werden können, um zu überprüfen, ob eine Zeichenfolge eine bestimmte Teilzeichen enthält Teilzeichenfolge passende ersetzen oder eine Bedingung entfernen einem Teilstring aus einem String und so weiter.

  • Die Säule Katalog, Richt * .txt ls * .txt oder * .txt ist nicht in einem regulären Ausdruck, weil es * ist * mit regulären Ausdruck bedeutet, ist anders.
  • Das Verfahren zur Herstellung eines regulären Ausdruck konstruieren und mathematische Ausdrücke die gleiche Weise erstellen. Das heißt, eine Vielzahl von Meta-Zeichen und Operatoren können miteinander kombinieren, kleine Ausdrücke größere Ausdrücke zu erstellen. Component reguläre Ausdrücke kann ein einzelnes Zeichen, Zeichensatz sein, eine Reihe von Zeichen wählen, zwischen den Zeichen oder einer beliebigen Kombination all dieser Komponenten.

Reguläre Ausdrücke sind Textmodus von gemeinsamen Zeichen besteht (wie zB Buchstaben von a bis z) und Sonderzeichen (so genannte "Meta-Zeichen") davon. Modus Beschreibung, wenn sie für die Textsuche einen oder mehrere Strings entsprechen. Regulärer Ausdruck als Vorlage, einem Zeichenmodus und dem Suchbegriff übereinstimmen.

Gewöhnliche Zeichen

Gewöhnliche Zeichen als Metazeichen alle druckbaren und nicht druckbare Zeichen nicht explizit benannt. Dazu gehören alle Groß- und Kleinbuchstaben, alle Ziffern, alle Satzzeichen und andere Symbole.

Nicht druckbare Zeichen

Nicht druckbare Zeichen kann auch ein Teil des regulären Ausdrucks sein. In der folgenden Tabelle sind die Escape-Sequenzen, die nicht druckbare Zeichen darstellen:

字符 描述
\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。

Sonderzeichen

Die so genannten Sonderzeichen ist, dass einige Zeichen eine besondere Bedeutung haben, wie es "* .txt" in * sagt, bedeutet einfach, dass die String-Darstellung jeglicher Bedeutung. Wenn Sie den Dateinamen mit * Datei finden wollen, müssen Sie die * zu entkommen, dass ein Plus vor \ ist. ls \ *. txt.

Viele Metazeichen erfordern eine besondere Behandlung, wenn sie versuchen, um sie anzupassen. Um diese Sonderzeichen entsprechen, müssen Sie zuerst das Zeichen "Flucht" zu machen, das heißt, die umgekehrten Schrägstrich (\) vor ihnen. In der folgenden Tabelle sind die regulären Ausdruck Sonderzeichen:

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

Kennzeichner

Qualifier wird verwendet, um den regulären Ausdruck einer bestimmten Komponente zu spezifizieren müssen oft erscheinen, um das Spiel zu erfüllen. Es * oder + oder? Oder {n} oder {n,} oder {n, m} insgesamt 6.

Reguläre Ausdrücke-Qualifikation sind:

字符 描述
* 匹配前面的子表达式零次或多次。例如,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?'。请注意在逗号和两个数之间不能有空格。

Da die Kapitelnummer in einem großen Eingabedokument wird wahrscheinlich mehr als neun, so müssen Sie einen Weg mit zwei oder drei Kapitel Zahlen zu beschäftigen. Qualifier gibt Ihnen diese Fähigkeit. Der folgende reguläre Ausdruck entspricht einer beliebigen Anzahl von Bits nummeriert Kapitelüberschriften:

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

Bitte beachten Sie, dass das Qualifikationsspiel nach dem Bereichsausdruck erscheint. Somit gilt es für den gesamten Bereich des Ausdrucks, in diesem Fall nur die angegebene Zahl von 0-9 (einschließlich 0 und 9).

+ Qualifier wird hier nicht, wie in der zweiten Position oder der hinteren Position verwendet werden, nicht unbedingt benötigen, um eine Zahl zu haben. Auch verwenden? Charakter, weil es begrenzt die Kapitelnummern nur zwei Ziffern. Sie müssen wieder mindestens eine Zahl Kapitel und Leerzeichen übereinstimmen.

Wenn Sie die Kapitelnummer beschränkt sich auf nur 99 Kapitel kennen, können Sie den folgenden Ausdruck verwenden, um zumindest eine, sondern mindestens zwei Ziffern angeben.

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

Der Nachteil des obigen Ausdrucks größer als 99 Kapitel immer noch die Nummer nur den Anfang von zwei Ziffern entspricht. Ein weiterer Nachteil ist, dass Kapitel 0 wird auch übereinstimmen. Eine bessere Anpassung von nur zwei Ziffern des Ausdrucks ist wie folgt:

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

oder

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

*, + Und? Qualifiers sind gierig , weil sie so viel Text passen, hinter ihnen nur, plus ein? Kann nicht gierige oder minimale Übereinstimmung erzielt werden.

Zum Beispiel könnten Sie für HTML-Dokumente zu suchen, um in H1-Tags Schriften anbei. Der Text in Ihrem Dokument wie folgt:

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

Alle Inhalte entsprechen folgenden Ausdrücke von weniger als-Zeichen (<) Start () zwischen der H1-Tag größer als Symbol zu schließen>.

/<.*>/

Wenn Sie nur den Anfang von H1-Tags entsprechen müssen, die folgenden "genügsam" Ausdruck passt nur <H1>.

/<.*?>/

Von *, +, oder? Nach der Qualifikation statt? Die Ausdrücke "gierig" auf "genügsam" oder minimal Ausdruck Anpassung wechseln.

Locator

Locator können Sie reguläre Ausdrücke zum Anfang oder Ende der Leitung befestigt ist. Sie ermöglichen es, auch solche mit einem regulären Ausdruck, diese regulären Ausdrücke erscheinen in einem Wort, ein Wort am Anfang oder Ende eines Wortes zu schaffen.

Locator verwendet, um die Schnur oder Wortgrenze zu beschreiben, beziehen ^ und $ auf den Anfang und das Ende der Schnur, \ b Grenz Beschreibung vor oder nach dem Wort repräsentiert \ B eine nicht-Wortgrenze.

Reguläre Ausdrücke-Qualifikation sind:

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

Hinweis: Sie können die Qualifikation und Ankerpunkt verwenden können. Da unmittelbar vor oder nach der Verpackung oder Wortgrenzen können nicht mehr als einen Standort haben, und daher nicht so einen Ausdruck erlaubt wie ^ *.

Um am Anfang des Textes eine Textzeile übereinstimmen, starten Sie den Ausdruck n ^ Zeichen. ^ Sie diese Verwendung nicht den Ausdruck in Klammern in der Verwirrung nutzen.

Um Text am Ende einer Zeile des Textes finden Sie am Ende des Ausdrucks mit $ Zeichen in der positiven entsprechen.

Um die Abschnittsüberschriften in der Suche verwenden, wenn der Ankerpunkt, die folgenden regulären Ausdruck ein Kapiteltitel übereinstimmt, enthält der Titel nur zwei gefolgt von einer Nummer, und der Anfang der Zeile:

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

Echte Kapitelüberschriften erscheinen erst am Anfang der Zeile, aber es ist der einzige Text in der Zeile. Es erscheint zuerst die Linie am Ende der gleichen Reihe erschienen. Der folgende Ausdruck kann sicher sein, dass die angegebene Spiel passen nur ohne den Querverweis Abschnitt entsprechen. nur entsprechen den Anfang und das Ende einer Textzeile des regulären Ausdrucks Durch das Erstellen, können Sie es tun.

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

Spiel Wortgrenze ist etwas anders, aber die regulären Ausdrücke eine sehr wichtige Fähigkeit. Wortgrenze ist die Lage und der Abstand zwischen den Wörtern. Nicht-Wortgrenze ist an jedem anderen Ort. Der folgende Ausdruck entspricht dem Anfang des Wortes Kapitel drei Zeichen, weil diese drei Zeichen nach einer Wortgrenze erscheinen:

/\bCha/

\ B Zeichenposition ist sehr wichtig. Wenn es am Anfang der Zeichenfolge angeordnet ist angepaßt werden, sucht es nach einer Übereinstimmung in den Anfang des Wortes. Wenn es am Ende der Schnur ist, sieht es am Ende eines Wortes auf Übereinstimmung. Zum Beispiel stimmen mit den folgenden Ausdruck Kapitel Zeichenfolge ter Worten, wie es vor der Wortgrenze erscheint:

/ter\b/

Der folgende Ausdruck entspricht die Zeichenfolge Kapitel geeignet, aber entspricht nicht der String Eignung apt:

/\Bapt/

Apt Wortfolge erscheint in Kapitel Nichtwortgrenze, aber das Wort erscheint in der Fähigkeit der Wortgrenze. Für \ B Nichtwortgrenze Operator, ist Position nicht wichtig, weil das Spiel nicht egal ist, ob sie am Anfang oder Ende eines Wortes ist.

wählen

Verwenden Sie Klammern, die Auswahl aller zu umschließen, mit Optionen zwischen benachbarten durch | getrennt. Aber es ist ein Nebeneffekt Klammern zu verwenden, ist seine Spiele werden im Cache gespeichert, zur Verfügung zu diesem Zeitpunkt :? Auf der ersten Option, um diese Nebenwirkung zu beseitigen.

Wobei :? Nichterfassung ein Element, gibt es zwei nicht-Aufnahmeelement ist = und die beiden mehr Bedeutung haben, die ehemalige Positive Vorerkundung in jedem Start angepasst Klammern zu sein, ist der Ausdruck ??! Positionsmuster die Suche zu entsprechen, die negativen Vorerkundung ist, in jeder Startposition die Suche zu nicht mit dem regulären Ausdruck Muster entsprechen.

Rückreferenzierungen

Für einen regulären Ausdruck oder einen Teil des Musters auf beiden Seiten in Klammern hinzugefügt betreffenden Spiel in einen temporären Speicherpuffer führen wird jeder Teil erfasst werden gespeichert, um von rechts nach links Spiel erscheinen in einem regulären Ausdruck. Puffer Nr 1 von Anfang an, kann bis zu 99 erfasst subexpression speichern. Jeder Puffer kann '\ n' verwenden besuchen, wobei n eine oder zwei Dezimalstellen den spezifischen Puffer zu identifizieren.

Sie können die Nicht-Erfassung von Meta-Zeichen verwenden ':?', oder die Erfassung neu zu schreiben, speichern Sie die betreffenden Spiels '=' zu ignorieren? ".

Rückreferenzierungen am einfachsten, eine der nützlichsten ist die Fähigkeit, den Text zu liefern benachbarten Wortübereinstimmungen zu finden zwei identisch. Ein Beispiel im folgenden Satz:

Is is the cost of of gasoline going up up?

Der obige Satz haben offensichtlich viele wiederholte Worte. Wenn wir eine Methode entwickeln, um den Satz zu finden, anstatt doppelte Vorkommen jedes Wort zu finden, dass die mehr gut. Der folgende reguläre Ausdruck verwendet einen einzelnen subexpression dies zu erreichen:

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

Capture-Ausdrücke, wie [az] + angegeben, die einen oder mehrere Buchstaben. Der zweite Teil des regulären Ausdrucks ist ein Kind zuvor aufgenommenen Referenz anzupassen, das heißt, das zweite Auftreten des Wortes nur in Klammern durch den Ausdruck abgestimmt. 1 \ gibt die erste Unterspiel. Wortgrenze Metazeichen sicherzustellen, dass nur das ganze Wort zu erkennen. Andernfalls Phrasen wie "ausgegeben" oder "dies" und dergleichen nicht korrekt diesen Ausdruck zu identifizieren.

Regulärer Ausdruck nach globalen Tag (g) zeigt an, dieser Ausdruck in die Eingabezeichenfolge angewendet wird, kann so viele Spiele zu finden. Expression Groß- und Kleinschreibung am Ende von (i) Tag gibt Groß- und Kleinschreibung. Potenzielle Spiel Multi-line-Tag gibt Zeilenumbrüche auf beiden Seiten auftreten können.

Rückreferenzierungen können auch einen Universal Resource Indicator (URI) in seine Komponenten sein. Angenommen, Sie in die folgende URI-Protokoll aufgeschlüsselt werden soll (FTP, HTTP, etc.), Domain-Adressen und Seiten / path:

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

Der folgende reguläre Ausdruck stellt diese Funktionalität:

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

Die erste klammerten subexpression fängt der Web-Adresse des Protokollteil. Die subexpression passt auf jedes Wort Doppelpunkt und zwei Schrägstriche vor. Der zweite klammerten subexpression fängt die Domain-Adresse Teil der Adresse. Ein oder mehrere andere Zeichen als: subexpression Spiel / und. Die dritte klammerten subexpression erfassen die Portnummer (falls angegeben). Der Unterausdruck entspricht null oder mehr Ziffern nach dem Doppelpunkt. Es kann nur einmal den Unterausdruck wiederholt werden. Schließlich fängt die vierte klammerten subexpression den angegebenen Pfad Web-Adresse und / oder eine Seite. Dies gilt nicht für die Unterausdruck jedes Zeichen-Sequenz # oder Leerzeichen.

Der reguläre Ausdruck auf die oben URI angewendet, die Sub-Matching-Eintrag enthält die folgenden Elemente:

  • Der erste klammerten subexpression enthält "http"
  • Der zweite klammerten subexpression enthält "www.w3cschool.cc"
  • Die dritte klammerten subexpression mit "80"
  • Der vierte klammerten subexpression enthält "/html/html-tutorial.html"