Reguläre Onigmo-Ausdrücke Version 6.2.0
In diesem Abschnitt wird die Ruby-Syntax für reguläre Ausdrücke behandelt. Informationen zur Perl-Syntax regulärer Ausdrücke finden Sie in Ihrer Perl-Dokumentation oder https://perldoc.perl.org/perlre.html.
|
\x{7HHHHHHH} breites Hexadezimalzeichen (Punktwert des Zeichencodes)
(* \b ist nur in der Zeichenklasse wirksam [...]) |
\W Nicht-Wortzeichen
-- Paragraph_Separator -- Space_Separator
Zeicheneigenschaft
* \p{Eigenschaftsname} * \p{^property-name} (negativ) * \P{property-name} (negativ)
Name des Anwesens:
+ Funktioniert bei allen Kodierungen Alnum, Alpha, Leerzeichen, Strg, Ziffer, Diagramm, unten, Drucken, Punkt, Leerzeichen, oben, XDigit, Wort, ASCII,
+ funktioniert auf UTF8, UTF16, UTF32
\R Zeilenumbruch
Unicode: (?>\x0D\x0A|[\x0A-\x0D\x{85}\x{2028}\x{2029}])
Nicht Unicode: (?>\x0D\x0A|[\x0A-\x0D])
\X erweiterter Graphemcluster
Unicode: (?>\P{M}\p{M}*)
Nicht Unicode: (?M:.) |
gierig
widerstrebend
besitzergreifend (gierig und macht nach Wiederholung keinen Rückzieher)
|
|
ex. [a-w&&[^c-g]z] ==> ([a-w] UND ([^c-g] ODER z)) ==> [abh-w]
* Wenn Sie „[“, „-“, „]“ als normales Zeichen in einer Zeichenklasse verwenden möchten, sollten Sie diese Zeichen mit „\“ maskieren.
POSIX-Klammer ([:xxxxx:], negieren [:^xxxxx:])
Nicht Unicode-Fall:
Alnum Alphabet oder Ziffer Zeichen Alpha Alphabet ASCII-Codewert: [0 - 127] leer \t, \x20 Strg Ziffer 0-9 Diagramm enthalten alle Multibyte-codierten Zeichen senken print beinhaltet alle Multibyte-codierten Zeichen Punkt Leerzeichen \t, \n, \v, \f, \r, \x20 obere Wort alphanumerische, „_“- und Multibyte-Zeichen xdigit 0-9, af, AF
Unicode-Fall:
alnum Brief | Mark | Dezimalzahl Alpha Buchstabe | Markieren ASCII 0000 - 007F leer Space_Separator | 0009 Strg Steuerung | Formatieren | Nicht zugewiesen | Private_Use | Surrogat Ziffer Dezimalzahl graph [[:^space:]] && ^Control && ^Unassigned && ^Surrogate niedriger Kleinbuchstabe drucken [[:graph:]] | [[:Raum:]] punct Connector_Punctuation | Dash_Punctuation | Close_Interpunktion | Final_Interpunktion | Initial_Interpunktion | Andere_Interpunktion | Open_Interpunktion Leerzeichen Space_Separator | Zeilentrenner | Absatztrennzeichen | 0009 | 000A | 000B | 000C | 000D | 0085 oberer Großbuchstabe Wort Buchstabe | Mark | Dezimalzahl | Connector_Interpunktion xdigit 0030 - 0039 | 0041 - 0046 | 0061 - 0066 (0-9, af, AF) |
(?imxdau-imx) Option ein/aus i: Groß-/Kleinschreibung ignorieren m: mehrzeilig (Punkt(.) passt zu Zeilenumbruch) x: erweiterte Form
Zeichensatzoption (Zeichenbereichsoption) d: Standard (kompatibel mit Ruby 1.9.3) \w, \d und \s stimmen nicht mit Nicht-ASCII-Zeichen überein. \b-, \B- und POSIX-Klammern verwenden die Regeln der jeweiligen Kodierung. a: ASCII Die Option ONIG_OPTION_ASCII_RANGE ist aktiviert. \w, \d, \s und POSIX-Klammern stimmen nicht mit Nicht-ASCII-Zeichen überein. \b und \B verwenden die ASCII-Regeln. u: Unicode Die Option ONIG_OPTION_ASCII_RANGE ist deaktiviert. \w (\W), \d (\D), \s (\S), \b (\B) und POSIX-Klammern verwenden die Regeln der jeweiligen Kodierung.
Ein weiterer Ausdruck des Zurückblickens. Behalten Sie den Rest des \K bei und schließen Sie ihn nicht in das Ergebnis ein.
(?(cond)yes-subexp), (?(cond)yes-subexp|no-subexp) bedingter Ausdruck Entspricht „yes-subexp“, wenn (cond) einen wahren Wert liefert, andernfalls entspricht „no-subexp“. Folgendes (cond) kann verwendet werden:
(n) (n >= 1) Überprüft, ob die nummerierte Erfassungsgruppe mit etwas übereinstimmt.
(), ('Name') Überprüft, ob eine Gruppe mit dem angegebenen Namen mit etwas übereinstimmt. |
Bei der Rückreferenz durch den Multiplex-Definitionsnamen wird vorzugsweise auf einen Subexp mit einer großen Zahl verwiesen. (Wenn keine Übereinstimmung vorliegt, wird auf eine Gruppe mit der kleinen Zahl verwiesen.)
* Rückverweise nach Gruppennummer sind verboten, wenn eine benannte Gruppe im Muster definiert ist und ONIG_OPTION_CAPTURE_GROUP nicht festgelegt ist.
Rückreferenz mit Verschachtelungsebene
Level: 0, 1, 2, ...
\k (n >= 1) \k (n >= 1) \k'n+level' (n >= 1) \k'n-level' (n >= 1) \k (n >= 1) \k (n >= 1) \k'-n+level' (n >= 1) \k'-n-level' (n >= 1)
\k \k \k'Name+Ebene' \k'name-level'
Bestimmen Sie die relative Verschachtelungsebene ausgehend von der hinteren Referenzposition.
Beispiel 1.
/\A(?|.|(?:(?.)\g\k))\z/.match("reer")
Beispiel 2.
r = Regexp.compile(<<'__REGEXP__'.strip, Regexp::EXTENDED) (? \g \g* \g ){0} (? \s* > ){0} (? [a-zA-Z_:]+ ){0} (? [^ | [^<&]+)* ){0} (? >){1} \g __REGEXP__
p r.match('fbbbf').captures |
\g Rufen Sie das gesamte Muster rekursiv auf \g'0' Rufen Sie das gesamte Muster rekursiv auf \g Anruf nach relativer Gruppennummer (n >= 1) \g'-n' Aufruf nach relativer Gruppennummer (n >= 1) \g Anruf nach relativer Gruppennummer (n >= 1) \g'+n' Aufruf nach relativer Gruppennummer (n >= 1)
* Ein rekursiver Aufruf ganz links ist nicht zulässig.
* Der Aufruf nach Gruppennummer ist verboten, wenn eine benannte Gruppe im Muster definiert ist und ONIG_OPTION_CAPTURE_GROUP nicht festgelegt ist.
* Wenn sich der Optionsstatus der angerufenen Gruppe von der Anrufposition unterscheidet, ist die Option der Gruppe wirksam.
ex. (?-i:\g)(?i:(?a)){0} übereinstimmend mit „A“
Perl-Syntax: Verwenden Sie stattdessen (?&name), (?n), (?-n), (?+n), (?R) oder (?0). |
Das Verhalten der nicht benannten Gruppe (...) ändert sich unter den folgenden Bedingungen. (Die benannte Gruppe wird jedoch nicht geändert.)
Fall 1. /.../ (benannte Gruppe wird nicht verwendet, keine Option)
(...) wird als erfasste Gruppe behandelt.
Fall 2. /.../g (benannte Gruppe wird nicht verwendet, Option „g“)
(...) wird als nicht erfasste Gruppe (?:...) behandelt.
Fall 3. /..(?..)../ (benannte Gruppe wird verwendet, keine Option)
(...) wird als nicht erfasste Gruppe (?:...) behandelt. numbered-backref/call ist nicht erlaubt.
Fall 4. /..(?..)../G (benannte Gruppe wird verwendet, Option „G“)
(...) wird als erfasste Gruppe behandelt. numbered-backref/call ist erlaubt.
woher g: ONIG_OPTION_DONT_CAPTURE_GROUP G: ONIG_OPTION_CAPTURE_GROUP |
+ RUBIN (?m): Punkt(.) passt zu Zeilenumbruch
+ PERL, JAVA und Python (?s): Punkt(.) entspricht Zeilenumbruch (?m): ^ Übereinstimmung nach Newline, $ Übereinstimmung vor Newline
+ PERL (?d), (?l): dasselbe wie (?u) |
+ hexadezimale Ziffer Zeichentyp \h, \H + benannte Gruppe (?...) + mit dem Namen backref \k + Subexp-Aufruf \g, \g |
+ \N{Name}, \N{U+xxxx}, \N + \l,\u,\L,\U, \C + \v, \V, \h, \H, \o{xxx} + (?{Code}) + (??{Code}) + (?|...) + (*VERB:ARG)
* \Q...\E Dies ist in PERL und JAVA wirksam. |
+ Verlauf erfassen
(?@...) und (?@...)
ex. /(?@a)*/.match("aaa") ==> [, , ] |
+ Ungültige Codierungsbytesequenz wird nicht überprüft.
ex. UTF-8
* Ungültiges erstes Byte wird als Zeichen behandelt. /./u =~ "\xa3"
* Unvollständige Bytefolge wird nicht überprüft. /\w+/ =~ "a\xf3\x8ec" |