Utilia

Διάγραμμα regex (railroad)

Μετατρέψτε μια κανονική έκφραση JavaScript σε σαφές διάγραμμα railroad με ομάδες, εναλλακτικές, επαναλήψεις και lookarounds και εξαγάγετέ το σε SVG ή PNG.

Σημαίες: οποιαδήποτε από d g i m s u v y. Μπορείτε και να επικολλήσετε literal όπως /\d+/g.

Ομάδες σύλληψης
–
Εναλλακτικές
–
Ποσοτικοί προσδιορισμοί
–

Διάγραμμα railroad

Μπλε: κυριολεκτικό κείμενο. Πράσινο: τύποι χαρακτήρων και σύνολα (κόκκινο: σύνολο αποκλεισμού). Μωβ: άγκυρες και όρια. Πορτοκαλί: αναφορές προς τα πίσω. Διακεκομμένα πλαίσια: ομάδες και lookarounds. Μια διαδρομή πάνω από ένα στοιχείο το παραλείπει, μια διαδρομή κάτω το επαναλαμβάνει.

Πώς να οπτικοποιήσετε μια κανονική έκφραση

  1. Πληκτρολογήστε ή επικολλήστε το μοτίβο σας στην Κανονική έκφραση. Μπορείτε επίσης να επικολλήσετε ολόκληρο literal JavaScript όπως /^\d{3}-\d{4}$/gm: οι κάθετοι αφαιρούνται και οι σημαίες μεταφέρονται αυτόματα στο πεδίο Σημαίες.
  2. Προσθέστε σημαίες αν τις χρειάζεστε (οποιαδήποτε από d g i m s u v y). Οι σημαίες αλλάζουν τον τρόπο σχεδίασης ορισμένων τμημάτων: με το m, τα ^ και $ γίνονται «αρχή γραμμής» και «τέλος γραμμής»· με το s, η τελεία γίνεται «οποιοσδήποτε χαρακτήρας».
  3. Το διάγραμμα ενημερώνεται καθώς πληκτρολογείτε. Το Σχεδίαση διαγράμματος το ξανασχεδιάζει όποτε θέλετε και το Επόμενο παράδειγμα περνά από μερικά συνηθισμένα μοτίβα (email, αριθμός τηλεφώνου, δεκαεξαδικό χρώμα, τιμή, ετικέτα HTML, URL).
  4. Διαβάστε το διάγραμμα από αριστερά προς τα δεξιά, από την γεμάτη τελεία ως την τελεία με δαχτυλίδι. Κάθε διαδρομή που μπορείτε να ακολουθήσετε είναι μια συμβολοσειρά που ταιριάζει με το μοτίβο.
  5. Χρησιμοποιήστε το Λήψη SVG για καθαρή διανυσματική εικόνα (τεκμηρίωση, παρουσιάσεις), το Λήψη PNG για εικόνα σε διπλή ανάλυση ή το Αντιγραφή κώδικα SVG για να επικολλήσετε τον κώδικα σε ιστοσελίδα.

Περάστε το δείκτη πάνω από ένα πλαίσιο για να δείτε το τμήμα του μοτίβου από το οποίο προέρχεται και τη θέση του.

Πώς διαβάζεται ένα διάγραμμα railroad

Τα διαγράμματα railroad, γνωστά και ως διαγράμματα σύνταξης, περιγράφουν μια γραμματική ως σύνολο τροχιών. Μια κανονική έκφραση είναι ακριβώς μια τέτοια γραμματική, οπότε το σχέδιο δείχνει τη δομή της πολύ καλύτερα από μια πυκνή σειρά συμβόλων:

  • Τα μπλε πλαίσια είναι κυριολεκτικό κείμενο που πρέπει να εμφανίζεται όπως γράφτηκε, για παράδειγμα «@».
  • Τα πράσινα πλαίσια είναι τύποι χαρακτήρων (\d ψηφίο, \w χαρακτήρας λέξης, . οποιοσδήποτε χαρακτήρας…) και κλάσεις χαρακτήρων. Μια κλάση όπως η [\w.+-] γίνεται πλαίσιο με επικεφαλίδα «ένα από» που απαριθμεί κάθε στοιχείο· μια αρνητική κλάση [^…] είναι κόκκινη με επικεφαλίδα «κανένα από».
  • Τα μωβ κουμπιά είναι άγκυρες και όρια: αρχή και τέλος κειμένου ή γραμμής, το όριο λέξης \b. Ταιριάζουν με μια θέση, όχι με χαρακτήρα.
  • Τα πορτοκαλί διακεκομμένα πλαίσια είναι αναφορές προς τα πίσω, όπως \1 ή \k<name>: το ίδιο κείμενο με μια ομάδα που ταιριάστηκε νωρίτερα.
  • Τα διακεκομμένα πλαίσια είναι ομάδες. Οι ομάδες σύλληψης αριθμούνται με τη σειρά της ανοιχτής παρένθεσής τους («ομάδα #2 «domain»»)· οι ομάδες χωρίς σύλληψη (?:…) δεν πλαισιώνονται. Τα lookaheads και lookbehinds παίρνουν ροζ πλαίσιο με την ένδειξη «ακολουθείται από» ή «προηγείται», επειδή ελέγχουν το κείμενο χωρίς να το καταναλώνουν.
  • Οι παράλληλες τροχιές είναι εναλλακτικές που χωρίζονται με |.
  • Μια τροχιά πάνω από ένα στοιχείο σας επιτρέπει να το παραλείψετε (?, *, {0,n}). Μια τροχιά κάτω με βέλος γυρίζει πίσω για να το επαναλάβει (+, *, {n,m}). Οι αριθμοί επαναλήψεων που δεν είναι οι συνηθισμένοι γράφονται κάτω από τον βρόχο, όπως «2 έως 5 φορές», και οι lazy ποσοτικοί προσδιορισμοί (+?, *?) σημειώνονται ως «lazy».

Μηνύματα σφάλματος με θέσεις

Το μοτίβο ελέγχεται από τη μηχανή κανονικών εκφράσεων JavaScript του ίδιου του προγράμματος περιήγησής σας, οπότε ό,τι δέχεται το εργαλείο είναι ακριβώς ό,τι δέχεται το new RegExp() με τις ίδιες σημαίες. Όταν η μηχανή το απορρίπτει, το εργαλείο δείχνει τον προβληματικό χαρακτήρα με τη θέση του και έναν δείκτη κάτω από το μοτίβο. Αναγνωρίζει μια ) χωρίς αντίστοιχη, μια ομάδα που δεν κλείνει ποτέ, μια κλάση χαρακτήρων χωρίς ], έναν ποσοτικό προσδιορισμό χωρίς τίποτα προς επανάληψη (*a, a|+), μια μεμονωμένη ανάστροφη κάθετο στο τέλος και προσδιορισμούς {n,m} όπου το n είναι μεγαλύτερο από το m. Άλλα σφάλματα, όπως μια αναφορά προς όνομα ομάδας που δεν υπάρχει, εμφανίζονται με το μήνυμα του προγράμματος περιήγησης.

Η έκφραση μεταγλωττίζεται μόνο για να ελεγχθεί: δεν εκτελείται ποτέ σε κάποιο κείμενο και τίποτα δεν φεύγει από το πρόγραμμα περιήγησής σας.

Συχνές ερωτήσεις

Ποια παραλλαγή regex υποστηρίζει το εργαλείο;

Κανονικές εκφράσεις JavaScript (ECMAScript), μαζί με ονομασμένες ομάδες, lookbehind, escapes ιδιοτήτων Unicode \p{…} και τη σημαία v με φωλιασμένες κλάσεις. Μοτίβα από PCRE, Python ή Java συνήθως λειτουργούν κι αυτά, αλλά η σύνταξη που είναι ειδική για εκείνες τις μηχανές, όπως οι possessive ποσοτικοί προσδιορισμοί ή το (?P<name>…), απορρίπτεται επειδή δεν την υποστηρίζει το πρόγραμμα περιήγησης.

Γιατί η ομάδα χωρίς σύλληψη δεν σχεδιάζεται ως πλαίσιο;

Μια ομάδα όπως η (?:\.[\w-]+) απλώς ομαδοποιεί στοιχεία ώστε ένας ποσοτικός προσδιορισμός ή μια εναλλαγή να ισχύει για όλα. Δεν δημιουργεί σύλληψη, οπότε το διάγραμμα δείχνει το περιεχόμενο και τον βρόχο της χωρίς πλαίσιο, κάτι που κρατά το σχέδιο ευανάγνωστο. Οι ομάδες με inline σημαίες πλαισιώνονται και φέρουν την ένδειξη των σημαιών τους.

Ποια είναι η διαφορά ανάμεσα στην τροχιά παράλειψης και τον βρόχο;

Η τροχιά πάνω από ένα στοιχείο σημαίνει «επιτρέπονται μηδέν φορές» και η τροχιά κάτω σημαίνει «μπορεί να επαναληφθεί». Το ? έχει μόνο την πάνω τροχιά, το + μόνο την κάτω και το * και τις δύο. Για έναν προσδιορισμό όπως το {2,4}, ο βρόχος φέρει την ένδειξη «2 έως 4 φορές».

Μπορώ να χρησιμοποιήσω το διάγραμμα στην τεκμηρίωσή μου;

Ναι. Η εξαγωγή SVG είναι αυτόνομο διανυσματικό αρχείο με λευκό φόντο και σκούρες γραμμές, ιδανικό για αρχεία README, wikis και παρουσιάσεις. Η εξαγωγή PNG αποδίδεται σε διπλάσιο μέγεθος από το σχέδιο στην οθόνη, για καθαρή εμφάνιση σε οθόνες υψηλής πυκνότητας.

Υπάρχει όριο μεγέθους;

Τα μοτίβα μπορούν να έχουν έως 5.000 χαρακτήρες. Οι πολύ μεγάλες εκφράσεις δίνουν πλατύ διάγραμμα που μπορείτε να κυλήσετε οριζόντια· ο διαχωρισμός τους σε ονομασμένα τμήματα κάνει συχνά πιο εύκολη τη συντήρηση τόσο του διαγράμματος όσο και της regex.