Σφάλματα μεταγλώττισης regex#
Κάθε διαγνωστικό σε αυτή τη σελίδα προέρχεται από τον μεταγλωττιστή μοτίβων. Μια κανονική έκφραση μεταγλωττίζεται πριν εκτελεστεί, και ένα κακοσχηματισμένο μοτίβο τερματίζεται σε εκείνο το σημείο - πριν καν επιχειρηθεί η αντιστοίχιση. Τα σφάλματα είναι όλα μοιραία (F)· παγιδεύστε τα με eval αν χτίζετε μοτίβα από μη έμπιστη είσοδο:
my $re = eval { qr/$user_pattern/ };
die "bad pattern: $@" unless $re;
Η upstream Perl προσαρτά ένα επίθημα marked by <-- HERE in m/.../ που δείχνει την προβληματική θέση. Η PetaPerl αναφέρει τα ίδια σφάλματα· η ακριβής μορφοποίηση του δείκτη θέσης μπορεί να διαφέρει.
Συνηθισμένα δομικά σφάλματα#
`Unmatched ) in regex`#
(F) Ένα ) στο μοτίβο δεν έχει αντίστοιχο (. Συνήθως ένα τυπογραφικό λάθος ή μια κυριολεκτική παρένθεση χωρίς διαφυγή. Για να ταιριάξετε ένα κυριολεκτικό ), διαφύγετέ το ως \) ή βάλτε το σε μια κλάση χαρακτήρων [)].
`Quantifier follows nothing in regex`#
(F) Ένας ποσοδείκτης (*, +, ?, {n,m}) εμφανίστηκε χωρίς τίποτα μπροστά του για να επαναλάβει - για παράδειγμα /*abc/ ή /(?:)+/ σε μια κενή ομάδα. Ποσοδεικτήστε ένα κυριολεκτικό * διαφεύγοντάς το: /\*/.
`Unterminated group`#
(F) Ένα ( άνοιξε μια ομάδα που το μοτίβο δεν κλείνει ποτέ. Ισορροπήστε τις παρενθέσεις.
`Unterminated character class`#
(F) Ένα [ άνοιξε μια κλάση χαρακτήρων χωρίς κλείσιμο ]. Για να ταιριάξετε ένα κυριολεκτικό ], τοποθετήστε το πρώτο στην κλάση ([]x]) ή διαφύγετέ το ([\]x]).
`Unterminated comment group`#
(F) Μια ομάδα σχολίου (?#...) άνοιξε αλλά δεν έκλεισε με ).
`Unterminated conditional pattern`#
(F) Μια κατασκευή (?(condition)yes|no) έμεινε ανοιχτή.
`Unterminated group name`#
(F) Μια κατασκευή ονομασμένης ομάδας ((?<name>...), \k<name>) έφτασε στο τέλος του μοτίβου χωρίς να κλείσει τον οριοθέτη του ονόματός της.
`Unrecognized group type`#
(F) Οι χαρακτήρες μετά το (? δεν σχηματίζουν έναν τύπο ομάδας που γνωρίζει η PetaPerl. Ελέγξτε τη γραφή (?...) σε σχέση με την αναφορά regex.
`Unexpected end of character class`#
(F) Το μοτίβο τελείωσε στη μέση μιας κλάσης [...].
`Unexpected end of escape sequence`#
(F) Μια διαφυγή με ανάστροφη κάθετο διακόπηκε από το τέλος του μοτίβου.
Σφάλματα κλάσης χαρακτήρων και ευρών#
`Invalid [] range "%s" in regex`#
(F) Ένα εύρος χαρακτήρων μέσα στο [...] τρέχει αντίστροφα (από υψηλό σε χαμηλό), όπως στο [z-a]. Διατάξτε τα ακραία σημεία από χαμηλό σε υψηλό, ή διαφύγετε το - για να το ταιριάξετε κυριολεκτικά.
`Invalid range endpoint in character class`#
(F) Το ένα άκρο ενός εύρους - δεν είναι ένας μοναδικός χαρακτήρας (για παράδειγμα μια διαφυγή πολλών χαρακτήρων που χρησιμοποιείται ως ακραίο σημείο).
`POSIX class [:%s:] unknown`#
(F) Μια κλάση POSIX [:name:] ονομάζει μια κλάση που δεν υπάρχει. Τα έγκυρα ονόματα είναι alpha, digit, alnum, space, upper, lower, punct, print, graph, cntrl, xdigit, blank, word, και ascii. Ένα σκέτο [:alpha:] εκτός κάποιου άλλου [...] είναι επίσης σφάλμα - οι κλάσεις POSIX λειτουργούν μόνο μέσα σε μια κλάση χαρακτήρων: [[:alpha:]].
`Empty POSIX character class name`#
(F) Ένα [::] χωρίς τίποτα ανάμεσα στις άνω-κάτω τελείες.
Διαφυγές χαρακτήρων ελέγχου και αριθμητικές διαφυγές#
`Missing control char`#
(F) Μια διαφυγή \c δεν ακολουθήθηκε από τον χαρακτήρα που έπρεπε να ελέγξει, όπως σε ένα μοτίβο που τελειώνει σε \c.
`Missing control character after \c`#
(F) Ίδια αιτία με την παραπάνω, από διαφορετικό σημείο στον μεταγλωττιστή: το \c χρειάζεται έναν χαρακτήρα να ακολουθεί.
`Invalid control character '\c%s'`#
(F) Ο χαρακτήρας μετά το \c δεν είναι ένας που αποδέχεται το \c.
`Invalid octal escape`#
(F) Μια οκταδική διαφυγή \0/\o είναι κακοσχηματισμένη.
`Invalid octal digit in \o{}`#
(F) Ένα ψηφίο μέσα στο \o{...} δεν είναι 0–7.
`Expected '{' after \o`#
(F) Το \o πρέπει να ακολουθείται από {, όπως στο \o{17}.
`Expected '}' in \o{} and `Invalid Unicode code point in \o{}`#
(F) Μια διαφυγή \o{...} δεν τερματίζεται ή ονομάζει ένα σημείο κώδικα εκτός του έγκυρου εύρους.
`Invalid hex escape` / `Invalid hex digit` / `Expected '}' in hex escape`#
(F) Μια διαφυγή \x είναι κακοσχηματισμένη: ένα μη δεκαεξαδικό ψηφίο, ή ένα μη τερματισμένο \x{...}.
\g, \k, και αναφορές ομάδων#
`\g0 is not allowed` and `\g{0} is not allowed`#
(F) Η ομάδα 0 είναι ολόκληρη η αντιστοιχία και δεν μπορεί να γίνει οπισθαναφορά σε αυτήν. Αναφερθείτε σε μια πραγματική ομάδα σύλληψης (\g1, \g{name}).
`Invalid group number in \g` / `Invalid group number in \g{}`#
(F) Ο αριθμός μετά το \g δεν είναι έγκυρη αναφορά ομάδας.
`Expected digit or '{' after \g` / `Expected '}' after \g{`#
(F) Το \g πρέπει να ακολουθείται από ένα ψηφίο, ένα πρόσημο, ή {name}.
`Reference to nonexistent group number %d`#
(F) Μια οπισθαναφορά τύπου \g/\1 ονομάζει έναν αριθμό ομάδας που δεν περιέχει το μοτίβο.
`Reference to nonexistent group (relative offset %d)`#
(F) Μια σχετική οπισθαναφορά (\g{-2}) δείχνει πέρα από τις ομάδες που υπάρχουν.
`Reference to nonexistent named group '%s'`#
(F) Ένα \k<name> ή \g{name} αναφέρεται σε μια ονομασμένη ομάδα που δεν ορίστηκε ποτέ.
`Reference to nonexistent or invalid group`#
(F) Μια αναφορά ομάδας δεν μπόρεσε να επιλυθεί σε καμία ομάδα.
`Expected '<' or '\'' after \k` / `Expected '}' after \k{`#
(F) Μια ονομαστική οπισθαναφορά \k πρέπει να γράφεται \k<name>, \k'name', ή \k{name}.
Ονομασμένες ομάδες#
`Empty group name`#
(F) Μια ονομασμένη ομάδα (?<>...) ή αναφορά έχει κενές αγκύλες ονόματος.
`Group name must not start with a digit`#
(F) Τα ονόματα ομάδων ακολουθούν τους κανόνες των αναγνωριστικών· δεν μπορούν να ξεκινούν με ψηφίο.
\N και διαφυγές Unicode#
`\N in character class requires braces`#
(F) Μέσα στο [...], το \N πρέπει να γράφεται \N{...}· η σκέτη μορφή «οποιοσδήποτε χαρακτήρας εκτός newline» δεν επιτρέπεται σε μια κλάση.
`\N{NAME} not supported in character class`#
(F) Μια διαφυγή ονομασμένου χαρακτήρα \N{NAME} δεν επιτρέπεται μέσα σε μια κλάση χαρακτήρων.
`Expected '}' after \N{` / `Empty \N{U+} escape`#
(F) Μια διαφυγή \N{...} δεν τερματίζεται ή το \N{U+} δεν έχει δεκαεξαδικά ψηφία.
`Invalid hex in \N{U+...}` / `Invalid Unicode code point in \N{U+...}`#
(F) Το δεκαεξαδικό μέσα στο \N{U+...} είναι κακοσχηματισμένο ή ονομάζει ένα σημείο κώδικα εκτός του εύρους Unicode.
`Invalid Unicode code point`#
(F) Μια διαφυγή σημείου κώδικα ονομάζει μια τιμή πάνω από το μέγιστο του Unicode (0x10FFFF).
`Empty Unicode property name` / `Unknown Unicode property name`#
(F) Μια διαφυγή ιδιότητας \p{...} / \P{...} είναι κενή ή ονομάζει μια ιδιότητα που δεν αναγνωρίζει η PetaPerl.
Εκτεταμένες κατασκευές (?...)#
`Invalid flag after (?^` / `Invalid flag character`#
(F) Μια ομάδα ορισμού σημαιών (?flags) ή (?^flags:...) περιέχει έναν χαρακτήρα που δεν είναι έγκυρος τροποποιητής μοτίβου.
`Expected '{' after (??`#
(F) Μια κατασκευή αναβεβλημένου υπομοτίβου (??{ code }) είναι κακοσχηματισμένη.
`Expected '<', '=', or '>' after (?P`#
(F) Η κατασκευή τύπου Python (?P<name>...) / (?P=name) / (?P>name) είναι κακοσχηματισμένη.
`Expected DEFINE after (?(` / `Expected ')' after DEFINE`#
(F) Ένα μπλοκ (?(DEFINE)...) είναι κακοσχηματισμένο.
`Switch condition not recognized in regex` / `Invalid lookaround condition`#
(F) Η συνθήκη σε ένα υπό συνθήκη (?(...)...) δεν είναι αναγνωρισμένη μορφή (ένας αριθμός ομάδας, μια διεκδίκηση περιβλέπουσας, R, ή DEFINE).
Οικογένεια `Expected ')' after condition`#
(F) Η συνθήκη μιας υπό συνθήκη κατασκευής δεν έκλεισε με ). Οι παραλλαγές - `Expected ')' after (?(R...)`, `Expected ')' after code block condition`, `Expected ')' after lookahead condition`, `Expected ')' after lookbehind condition`, `Expected '=' or '!' after (?(<` - αναφέρουν όλες το ίδιο σχήμα σφάλματος σε διαφορετικούς τύπους συνθηκών.
Άγκιστρα ποσοδείκτη#
`Expected '}' after quantifier` / `Expected '}' or ',' in quantifier`#
(F) Ένας ποσοδείκτης {n,m} δεν τερματίζεται ή περιέχει έναν μη αναμενόμενο χαρακτήρα.
Οπίσθια διεκδίκηση#
`Variable length lookbehind not implemented`#
(F) Μια οπίσθια διεκδίκηση (?<=...) / (?<!...) της οποίας το περιεχόμενο μπορεί να ταιριάξει μεταβλητό αριθμό χαρακτήρων. Η PetaPerl, όπως και η upstream Perl, απαιτεί οπίσθια διεκδίκηση σταθερού μήκους. Ξαναγράψτε την οπίσθια διεκδίκηση σε σταθερό πλάτος, ή χρησιμοποιήστε \K για να σημειώσετε ένα σημείο διατήρησης.
Ρήματα#
`Unterminated verb`#
(F) Ένα ρήμα ελέγχου (*VERB) / (*VERB:ARG) δεν έκλεισε.
Γενικής χρήσης#
`Regex compilation error at position %d: %s` / `Regular expression error`#
(F) Ένα σφάλμα μεταγλώττισης με ετικέτα θέσης για περιπτώσεις που δεν καλύπτουν τα πιο συγκεκριμένα μηνύματα παραπάνω. Το κείμενο που ακολουθεί ονομάζει το υποκείμενο πρόβλημα.
`Unterminated string in %s`#
(F) Μια οριοθετημένη κατασκευή μέσα στο μοτίβο έφτασε στο τέλος της εισόδου χωρίς τον τερματικό οριοθέτη της.
Δείτε επίσης#
qr- προμεταγλωττίστε ένα μοτίβο ώστε ένα κακοσχηματισμένο να αποτυγχάνει μία φορά, κατά τη μεταγλώττιση, αντί σε κάθε αντιστοίχιση.m- ο τελεστής αντιστοίχισης· ο ίδιος μεταγλωττιστής απορρίπτει ένα κακοσχηματισμένο μοτίβο εδώ.s- ο τελεστής αντικατάστασης, του οποίου το μισό μοτίβο μεταγλωττίζεται από την ίδια μηχανή.Προειδοποιήσεις - τα μη μοιραία διαγνωστικά regex (
Useless use of \E,Invalid character in group name).