[Powered by Google Translate] [Σεμινάριο: Pattern Matching με Κανονικές Εκφράσεις]
[John Mussman-Πανεπιστήμιο του Χάρβαρντ]
[Αυτό είναι CS50.-CS50.TV]
Εντάξει. Λοιπόν, καλώς ήρθατε σε όλους. Αυτό είναι CS50 2012.
Το όνομά μου είναι Γιάννης, και εγώ θα πρέπει να μιλάμε σήμερα για κανονικές εκφράσεις.
Κανονικές εκφράσεις είναι κυρίως ένα εργαλείο, αλλά επίσης μερικές φορές χρησιμοποιείται
στον κώδικα ενεργά για να ταιριάζει ουσιαστικά τα πρότυπα και τις σειρές.
Έτσι, εδώ είναι μια κωμική διαδίκτυο από xkcd.
Σε αυτό το comic υπάρχει ένα μυστήριο φόνο, όπου ο δολοφόνος έχει
ακολουθείται κάποιος στις διακοπές, και οι πρωταγωνιστές πρέπει να
αναζήτηση μέσω 200 megabytes των emails που αναζητούν για μια διεύθυνση.
Και είναι έτοιμος να παραιτηθεί, όταν κάποιος που ξέρει κανονικές εκφράσεις -
προφανώς ένας υπερήρωας - εφορμά προς τα κάτω και γράφει κάποια κώδικα
και λύνει το μυστήριο φόνο.
Έτσι, κατά πάσα πιθανότητα αυτό θα είναι κάτι που θα πρέπει να εξουσιοδοτηθεί να κάνει
μετά από αυτό το σεμινάριο.
Είμαστε ακριβώς πρόκειται να παρέχει μια συνοπτική εισαγωγή στη γλώσσα
και να σας δώσει αρκετά μέσα για να πάει μετά από περισσότερους πόρους για τη δική σας.
>> Έτσι, κανονικές εκφράσεις φαίνονται βασικά όπως αυτό.
Αυτή είναι μια κανονική έκφραση σε Ruby.
Δεν είναι τρομερά διαφορετικό σε διάφορες γλώσσες.
Έχουμε ακριβώς στις καθέτους για να ξεκινήσει και να σηματοδοτήσει την κανονική έκφραση σε Ruby.
Και αυτό είναι μια κανονική έκφραση για να ψάξουν για το πρότυπο διεύθυνση email.
Έτσι βλέπουμε το πρώτο bit αναζητά κάθε αλφαριθμητικό χαρακτήρα.
Αυτό συμβαίνει επειδή διευθύνσεις ηλεκτρονικού ταχυδρομείου συχνά πρέπει να ξεκινήσει με ένα γράμμα της αλφαβήτου.
Και τότε κάθε ειδικό χαρακτήρα ακολουθούμενο από το σύμβολο @.
Και στη συνέχεια το ίδιο πράγμα για το όνομα τομέα.
Και στη συνέχεια, μεταξύ 2 και 4 χαρακτήρες για να ψάξουν για το. Com,. Net, και ούτω καθεξής.
Έτσι, αυτό είναι ένα άλλο παράδειγμα της κανονική έκφραση.
Έτσι, κανονικές εκφράσεις είναι πρωτόκολλα για την εύρεση ομιλίες στο κείμενο.
Κάνουν συγκρίσεις, επιλογές, και αντικαταστάσεις.
Έτσι, ένα τρίτο παράδειγμα είναι η εξεύρεση όλους τους αριθμούς τηλεφώνου που λήγει σε 54 σε έναν κατάλογο.
Έτσι, πριν από τον David σχίζει επάνω στον κατάλογο CS50 θα μπορούσαμε να αναζητήσετε
ένα μοτίβο όπου έχουμε παρενθέσεις στη συνέχεια 3 αριθμούς καταλήγουν στη συνέχεια παρένθεση,
3 περισσότερους αριθμούς, μια παύλα, 2 αριθμούς, και στη συνέχεια 54.
Και αυτό θα είναι ουσιαστικά το πώς μπορούμε να καταλήξουμε σε μια κανονική έκφραση για να ψάξει για αυτό.
>> Έτσι, υπάρχουν - έχουμε κάνει κάποια πράγματα στο CS50 που είναι λίγο σαν
κανονικές εκφράσεις, έτσι ώστε - για παράδειγμα - στο dictionary.C αρχείο
για τον έλεγχο set πρόβλημα ξόρκι που μπορεί να έχουν χρησιμοποιηθεί fscanf
να διαβάσει μια λέξη από το λεξικό.
Και μπορείτε να δείτε το 45s ποσοστό ψάχνει για μια σειρά από 45 χαρακτήρες.
Γι 'αυτό είναι κάπως σαν ένα υποτυπώδες κανονική έκφραση.
Και μπορείτε να έχετε 45 χαρακτήρες που ταιριάζουν με το νομοσχέδιο εκεί
και να πάρει εκείνα τα πάνω.
Και τότε το δεύτερο παράδειγμα στην πιο πρόσφατη πρόβλημα προγραμματισμού web
που προβλέπει ο κώδικας διανομή για PHP μπορούμε πραγματικά να έχουν μια απλή κανονική έκφραση.
Και αυτό είναι απλά ψάχνουν για να ελέγξετε αν η ιστοσελίδα που έχει περάσει στο
ταιριάζει είτε σύνδεσης ή αποσύνδεσης εγγραφείτε. PHP.
Και στη συνέχεια επιστρέφει αληθείς ή ψευδείς βασίζονται στην εν λόγω τακτική που ταιριάζουν έκφραση.
>> Έτσι, όταν χρησιμοποιείτε κανονική έκφραση;
Γιατί είσαι εδώ σήμερα;
Έτσι δεν θέλετε να χρησιμοποιήσετε κανονική έκφραση, όταν υπάρχει κάτι που
κάνει τη δουλειά για σας ακόμη πιο εύκολα.
Έτσι, XML και HTML είναι πραγματικά πολύ δύσκολο
για να γράψει τις συνήθεις εκφράσεις για μας, όπως θα δούμε σε λίγο.
Έτσι, υπάρχουν ειδικά αναλυτών για τις γλώσσες αυτές.
Θα πρέπει επίσης να είναι εντάξει με την συμβιβασμούς και την ακρίβεια συχνά.
Αν προσπαθείτε - έτσι είδαμε μια κανονική έκφραση για μια διεύθυνση ηλεκτρονικού ταχυδρομείου,
αλλά λένε ότι ήθελε μια συγκεκριμένη ηλεκτρονική διεύθυνση και σταδιακά η
κανονική έκφραση μπορεί να γίνει πιο περίπλοκη, δεδομένου ότι έγινε πιο ακριβή.
Έτσι, αυτό θα είναι ένα εμπόριο off.
Θα πρέπει να είστε σίγουροι ότι είστε εντάξει κάνει με την κανονική έκφραση.
Αν ξέρετε ακριβώς τι ψάχνετε θα μπορούσε να έχει περισσότερο νόημα
να θέσει στο χρόνο και να γράψει ένα πιο αποτελεσματικό αναλυτή.
Και, τέλος, υπάρχει ένα ιστορικό θέμα με την κανονικότητα
από τις εκφράσεις και τις γλώσσες.
Οι κανονικές εκφράσεις είναι στην πραγματικότητα πολύ πιο ισχυρή από ό, τι
κανονικές εκφράσεις ανά πω σε μια τυπική έννοια του όρου.
>> Γι 'αυτό δεν θέλω να πάει πολύ μακριά στην επίσημη θεωρία,
αλλά οι περισσότερες γλώσσες που έχουμε κώδικα στην πραγματικότητα δεν είναι τακτική.
Και αυτός είναι ο λόγος κανονικές εκφράσεις κάποιες φορές δεν θεωρούνται όλα αυτά ασφαλή.
Έτσι, βασικά, υπάρχει μια ιεραρχία Τσόμσκι για τις γλώσσες,
και οι κανονικές εκφράσεις δημιουργηθεί χρησιμοποιώντας ένωση, συνένωση,
και τη λειτουργία αστέρι Kleene ότι θα δούμε σε λίγα λεπτά.
Αν σας ενδιαφέρει η θεωρία ότι υπάρχει μια αρκετά μεγάλη συμβαίνει εκεί κάτω από την κουκούλα.
>> Έτσι, μια σύντομη ιστορία - μόνο για το πλαίσιο εδώ - τακτική σετ ήρθε
στη δεκαετία του 1950, και στη συνέχεια είχαμε απλά συντάκτες που
ενσωματωθεί κανονικές εκφράσεις - απλά ψάχνουν για έγχορδα.
Grep - το οποίο είναι ένα εργαλείο γραμμής εντολών - ήταν ένα από τα πρώτα
πολύ δημοφιλή εργαλεία που ενσωματώνονται κανονικές εκφράσεις στη δεκαετία του 1960.
Στη δεκαετία του '80, Perl χτίστηκε - είναι μια γλώσσα προγραμματισμού που
ενσωματώνει κανονικές εκφράσεις είναι πολύ εμφανές.
Και στη συνέχεια, πιο πρόσφατα, είχαμε Perl συμβατό με κανονική έκφραση
πρωτόκολλα ουσιαστικά και σε άλλες γλώσσες που χρησιμοποιούν σε μεγάλο βαθμό την ίδια σύνταξη.
Φυσικά, το πιο σημαντικό γεγονός ήταν το 2008
όπου υπήρξε η πρώτη Εθνική Ημέρα τακτική εκφράσεις,
τα οποία πιστεύω ότι είναι ο Ιούνιος 1, εάν θέλετε να γιορτάσετε αυτό.
>> Και πάλι, λίγο περισσότερο στη θεωρία εδώ.
Έτσι, υπάρχουν δύο διαφορετικοί τρόποι για την κατασκευή κανονικών εκφράσεων.
Ένας απλός τρόπος είναι να οικοδομήσουμε την παράσταση που πρόκειται να
τρέξει για το string ερμηνεύουν - βασικά οικοδομήσουμε ένα μικρό μίνι-πρόγραμμα που
θα αναλύσει κομμάτια από μια σειρά και να δούμε, "Ω, αυτό δεν ταιριάζει με την κανονική έκφραση ή όχι;"
Και στη συνέχεια, εκτελέστε αυτό.
Έτσι, εάν έχετε ένα πολύ μικρό κανονική έκφραση, αυτή είναι ίσως
ο πιο αποτελεσματικός τρόπος για να το κάνει.
Και στη συνέχεια, αν - μια άλλη επιλογή είναι να κρατήσει την ανασυγκρότηση της
έκφρασης όπως πάτε, και αυτό είναι η δυνατότητα προσομοίωσης.
Και αυτές οι πρώτες προσπάθειες σε τακτά αλγόριθμοι έκφρασης ήταν
σχετικά απλή και σχετικά γρήγορα, αλλά δεν έχουν μεγάλη ευελιξία.
Έτσι για να κάνει ακόμη και μερικά από τα πράγματα που θέλουμε να δούμε
Σήμερα είχαμε να κάνουμε πιο περίπλοκη κανονική έκφραση
εφαρμογές που είναι δυνητικά πολύ πιο αργή? έτσι αυτό είναι κάτι που πρέπει να έχουμε κατά νου
Υπάρχει επίσης μια τακτική άρνηση εκφράσεις της ποικιλίας επίθεσης
που εκμεταλλεύονται τις δυνατότητες για τα νεότερα εφαρμογές
συνήθεις εκφράσεις για να γίνει πολύ περίπλοκη.
Και σε ένα μεγάλο μέρος την ίδια έννοια που είδαμε στις επιθέσεις υπερχείλισης buffer,
έχετε κρίσεις που λειτουργούν κάνοντας αναδρομικές βρόχων που
υπέρβαση της ικανότητας της μνήμης.
Και από τον τρόπο Regexen είναι μία από τις επίσημες πληθυντικό της κανονική έκφραση
κατ 'αναλογία με βόδια στο Anglo-Saxon.
>> Εντάξει, έτσι ώστε η Βιβλιοθήκη Python πολλοί από εσάς εδώ στο πρόσωπο έχουν Macs,
ώστε να μπορείτε να τραβάτε πραγματικά αυτό επάνω στην οθόνη σας.
Οι κανονικές εκφράσεις χτισμένο σε Python.
Και έτσι η Python είναι προεγκατεστημένο σε υπολογιστές Mac και θα διατίθεται επίσης σε απευθείας σύνδεση σε αυτό το σύνδεσμο.
Έτσι, αν παρακολουθείτε μπορείτε να διακόψετε και να βεβαιωθείτε ότι έχετε την Python
όπως παίζουμε εδώ γύρω.
Υπάρχει ένα εγχειρίδιο σε απευθείας σύνδεση, οπότε αν απλά πληκτρολογήστε Python στον υπολογιστή σας
θα δείτε ότι η έκδοση έρχεται στο τερματικό.
Έτσι παρέχεται μια σύνδεση με το εγχειρίδιο για την έκδοση 2 της Python, καθώς και ένα σκονάκι.
Υπάρχει μια έκδοση 3 της Python, αλλά το Mac σας δεν σημαίνει απαραίτητα
έρχονται με αυτό το προεγκατεστημένο.
Έτσι, δεν είναι τρομερά διαφορετικό.
Εντάξει, έτσι ώστε ορισμένα βασικά στοιχεία από τη χρήση κανονικών εκφράσεων σε Python.
>> Εδώ, λοιπόν, χρησιμοποιείται μια πολύ απλή έκφραση, έτσι έκανα Python εκ νέου εισαγωγής
και στη συνέχεια πήρε το αποτέλεσμα της re.search.
Και η αναζήτηση διαρκεί 2 επιχειρήματα.
Η πρώτη είναι η κανονική έκφραση, και το δεύτερο είναι το κείμενο
ή το κορδόνι που θέλετε να αναλύσετε.
Και τότε θα εκτυπωθεί το result.group.
Έτσι, αυτές είναι οι 2 βασικές λειτουργίες που πρόκειται να δούμε σήμερα
στην εκμάθηση για κανονικές εκφράσεις.
Έτσι απλά χωρίς να χαλάσει αυτή η κανονική έκφραση εδώ
h και στη συνέχεια \ w και στη συνέχεια m έτσι \ w δέχεται μόνο κάθε γράμμα της αλφαβήτου εκεί.
Έτσι, εδώ ψάχνουμε για ένα "h" και στη συνέχεια ένα άλλο γράμμα της αλφαβήτου
και στη συνέχεια m, έτσι και εδώ που θα ταιριάζουν με ζαμπόν
σε, "Αβραάμ Λίνκολν και ζαμπόν σάντουιτς."
Αυτό είναι το αποτέλεσμα της εν λόγω ομάδας.
Ένα άλλο πράγμα που μπορούμε να κάνουμε είναι να χρησιμοποιήσουμε πριν χορδές μας των κειμένων σε Python.
Έτσι υποθέτω ότι θα προχωρήσει και τραβήξτε ότι μέχρι εδώ.
Python εκ νέου εισαγωγής.
Και αν μου ήταν να κάνω το ίδιο πράγμα - ας πούμε το κείμενο είναι,
«Ο Αβραάμ," ας μεγέθυνση - εκεί πάμε.
Το κείμενο είναι, «Ο Αβραάμ τρώει ζαμπόν."
Εντάξει, και να οδηγήσει στη συνέχεια = re.search.
Και τότε η έκφραση μας μπορεί να είναι h, και στη συνέχεια θα κάνω dot m.
Έτσι dot διαρκεί μόλις Οποιοσδήποτε χαρακτήρας που δεν είναι μια νέα γραμμή, συμπεριλαμβανομένων των αριθμών,
σημάδια ποσοστό, κάτι τέτοιο.
Και τότε το κείμενο - boom - και στη συνέχεια result.group--ναι.
Έτσι, αυτό είναι ακριβώς το πώς να εφαρμόσουν τις βασικές λειτουργίες εδώ.
Αν είχαμε ένα δαχτυλίδι κείμενο αυτό - αυτή η τρελή κείμενο - συμπεριλαμβάνεται λένε πολλά πίσω καθέτους
και έγχορδα μέσα και τα πράγματα που θα μπορούσαν να μοιάζουν με ακολουθίες διαφυγής,
τότε ίσως θέλετε να χρησιμοποιήσετε την πρώτη μέθοδο εισαγωγής κειμένου για να βεβαιωθείτε ότι είναι αποδεκτή.
Και αυτό ακριβώς φαίνεται σαν αυτό.
Έτσι, αν ψάχναμε για καθέναν από αυτούς εκεί μέσα δεν θα πρέπει να βρούμε κάτι.
Αλλά αυτό είναι το πώς θα το εφαρμόσουν? Λίγο πριν από τη σειρά των
η κανονική έκφραση βάζετε το γράμμα R.
>> Εντάξει, ας συνεχίσουμε.
Εντάξει - οπότε ας ρίξουμε μια ματιά σε μερικά μοτίβα που επαναλαμβάνονται εδώ.
Έτσι, ένα πράγμα που θέλετε να κάνετε είναι να επαναλάβετε τα πράγματα
όπως ψάχνετε μέσα από το κείμενο.
Έτσι για να κάνει μια ακολουθούμενο από οποιονδήποτε αριθμό των β - κάνετε ab *.
Και τότε υπάρχουν μια σειρά από άλλους κανόνες πάρα πολύ.
Και μπορείτε να δείτε όλα αυτά μέχρι? Θα τρέξω μέσα από μερικά από τα
που χρησιμοποιούνται πιο συχνά αυτά.
Έτσι ab + είναι ένα που ακολουθείται από οποιοδήποτε Ν μεγαλύτερη από μηδέν του b.
ab; είναι μια που ακολουθείται από 0 ή 1 b.
ab {Ν} είναι ένα ακολουθούμενη από Ν του Β, και στη συνέχεια ούτω καθεξής.
Αν έχετε 2 αριθμούς στα άγκιστρα που προσδιορίζει μια σειρά
που μπορεί ενδεχομένως να είναι συμφωνημένα.
Έτσι, θα δούμε περισσότερα σε μια-δυο επαναλαμβανόμενα μοτίβα σε ένα λεπτό.
Έτσι, 2 πράγματα που πρέπει να θυμάστε όταν χρησιμοποιείτε αυτά τα ταίριασμα εργαλεία εδώ.
Έτσι λέμε ότι θέλουμε να δούμε την Ι. Μ., «Ο Αβραάμ Λίνκολν κάνει ζαμπόν σάντουιτς."
Γι 'αυτό και άλλαξε το όνομά του Αβραάμ Λίνκολν στον Αβραάμ.
Και τώρα ψάχνουμε για ό, τι επιστρέφεται από αυτή τη λειτουργία αναζήτησης,
και επιστρέφει μόνο το ζαμπόν σε αυτή την περίπτωση.
Και το κάνει αυτό γιατί αναζήτησης διαρκεί μόλις φυσικά το πιο αριστερό ουρά.
Και όλες οι κανονικές εκφράσεις, εκτός αν ορίσετε διαφορετικά θα το κάνουμε αυτό.
Αν θέλαμε να βρούμε όλα υπάρχει μια λειτουργία για αυτό - βρείτε όλα.
Έτσι που θα μπορούσε απλά να μοιάζει με όλα = re.findall («h.m», το κείμενο)
και στη συνέχεια all.group ().
Όλα παράγει τόσο ζαμπόν και ζαμπόν? Σε αυτή την περίπτωση οι δύο χορδές σε Abraham κάθε ζαμπόν.
Έτσι, αυτό είναι μια άλλη επιλογή.
>> Μεγάλη. Το άλλο πράγμα που πρέπει να θυμάστε είναι ότι η τακτική εκφράσεις λαμβάνουν το μεγαλύτερο διαισθητικά.
Ας δούμε σε αυτό το παράδειγμα.
Κάναμε ότι το πιο αριστερό αναζήτησης εδώ, και στη συνέχεια επιχείρησε μια μεγαλύτερη αναζήτηση
χρησιμοποιώντας το Kleene φορέα αστέρων.
Έτσι, για, "Αβραάμ Λίνκολν κάνει σάντουιτς ζαμπόν," και εγώ μόλις επέστρεψα
m, ως αποτέλεσμα.
Ο λόγος για αυτό το λάθος ήταν ότι θα μπορούσα να έχω λάβει οποιοδήποτε αριθμό των
h είναι γιατί δεν προσδιορίζει κάτι να πάει στο μεταξύ h και m.
Το μόνο παράδειγμα εκεί που είχε m - τα μόνα παραδείγματα εκεί με m σε αυτό
και οποιοσδήποτε αριθμός του h ήταν ακριβώς το m string.
Στη συνέχεια δοκίμασα πάλι? Είπα, "Εντάξει, ας πάρει την πραγματική μεγαλύτερη ομάδα εδώ."
Και τότε έκανα h. * M, έτσι ώστε να επιστρέφει ακριβώς οποιοδήποτε αριθμό των χαρακτήρων μεταξύ h και m.
Και αν είστε λίγο ξεκινάμε και σκέψης, "Ω, εντάξει, αλλά αυτό θα
φέρε μου ζαμπόν, "παίρνει πραγματικά τα πάντα από την ώρα σε Αβραάμ Λίνκολν
σε όλη τη διαδρομή μέχρι το τέλος του ζαμπόν.
Είναι άπληστοι? Βλέπει h - όλα αυτά άλλο κείμενο - m,
και αυτό είναι ό, τι χρειάζεται μέσα
Πρόκειται για μια ιδιαίτερα σκανδαλώδη - αυτό είναι ένα χαρακτηριστικό μπορούμε επίσης να
διευκρινίζει ότι δεν ήταν άπληστοι με άλλες λειτουργίες.
Αλλά αυτό είναι κάτι που πρέπει να έχουμε κατά νου, ιδίως
κατά την εξέταση HTML κείμενο, το οποίο είναι ένας λόγος που
κανονικές εκφράσεις είναι δύσκολο για την HTML.
Διότι, αν έχετε μια ανοικτή ετικέτα HTML και στη συνέχεια πολλά πράγματα στη μέση
και στη συνέχεια κάποιες άλλες HTML κλειστά tag πολύ αργότερα στο πρόγραμμα,
έχετε μόλις φάει ένα πολύ κώδικα HTML, ενδεχομένως κατά λάθος.
>> Εντάξει - έτσι πιο ειδικούς χαρακτήρες, όπως και πολλές άλλες γλώσσες,
να ξεφύγουμε με την κάθετο.
Έτσι, μπορούμε να χρησιμοποιήσουμε την τελεία για να καθορίσετε οποιονδήποτε χαρακτήρα εκτός από μια νέα γραμμή.
Μπορούμε να χρησιμοποιήσουμε τη διαφυγή w για να καθορίσετε κάθε γράμμα της αλφαβήτου.
Και από d διαφυγής αναλογία για κάθε ακέραιο - αριθμητική χαρακτήρα.
Μπορούμε να καθορίσετε - μπορούμε να χρησιμοποιήσουμε παρενθέσεις για να καθορίσετε συναφείς εκφράσεις.
Έτσι, αυτό θα δεχόταν, b, ή c.
Και μπορούμε επίσης να καθορίσετε ή επιλογές για την Α ή Β.
Για παράδειγμα - αν ψάχναμε για πολλαπλές δυνατότητες
σε παρένθεση θα μπορούσαμε να χρησιμοποιήσουμε το ή φορέας εκμετάλλευσης, σε -
οπότε ας πάμε πίσω σε αυτό το παράδειγμα εδώ.
Και τώρα ας ρίξουμε - ας πάμε πίσω στο παράδειγμα αυτό εδώ, και στη συνέχεια
να ae - έτσι αυτό θα πρέπει να επιστρέψει - Υποθέτω ότι αυτό εξακολουθεί να είναι ο Αβραάμ.
Έτσι, αυτό - αν δεν κάνουμε όλα - μεγάλο.
Έτσι, ας ενημερώσει το κείμενο εδώ.
«Ο Αβραάμ τρώει ζαμπόν, ενώ εγκλωβισμό του -. Ενώ στρήφωμα" Μεγάλη.
Όλα. Μεγάλη. Τώρα έχουμε ζαμπόν, ζαμπόν, και τον ποδόγυρο.
Ενώ στρήφωμα - ενώ βουητό σε αυτόν - ενώ βουητό στο στρίφωμα του. Μεγάλη.
Το ίδιο πράγμα.
Τώρα όλοι να επιστρέφει μόνο ζαμπόν, ζαμπόν, και τον ποδόγυρο χωρίς να πάρει για το βουητό ή το ίδιο.
Great - ναι, τι αν θέλαμε να δούμε είτε ότι - έτσι θα μπορούσαμε επίσης να κάνουμε
αυτόν ή - θα επανέλθουμε σε αυτό.
Εντάξει - έτσι - εντάξει - σε θέσεις μπορείτε επίσης να χρησιμοποιήσετε το καρέ ή το σύμβολο του δολαρίου
να διευκρινιστεί ότι ψάχνετε για κάτι που στην αρχή ή το τέλος μιας συμβολοσειράς.
Ή η αρχή ή το τέλος μιας λέξης.
Αυτός είναι ένας τρόπος για να το χρησιμοποιήσετε.
>> Εντάξει - οπότε ας παίξει γύρω με ένα ελαφρώς μεγαλύτερο τμήμα κειμένου.
Ας πούμε αυτή τη σειρά εδώ - αυτή τη δήλωση εδώ.
Η δύναμη της κανονική έκφραση είναι ότι μπορούν να καθορίζουν τα πρότυπα
δεν καθορίζεται μόνο χαρακτήρες.
Ας κάνουν - ας το ονομάσουμε αυτό το μπλοκ.
Τότε θα διαβάσει όλα αυτά μέσα
Και έχουν στη συνέχεια ένα - ας κάνει όλα =? Ναι, τι είναι μερικά πράγματα που θα μπορούσαμε να αναζητήσετε εδώ κερδοφόρα;
Θα μπορούσαμε να κοιτάξουμε για το αυτί έκφρασης.
Δεν είναι πολύ ενδιαφέρουσα. Τι λέτε για αυτό; Θα δούμε τι θα συμβεί.
Έδωσα ένα πρόβλημα.
Έτσι, πολλά πράγματα πριν από την εκ νέου και όλα.
Έτσι, αυτό θα πρέπει να επιστρέψουν τα πάντα, από την αρχή μέχρι όλες οι δράσεις Re ίσως μια-δυο φορές.
Και τότε εδώ έχουμε τη δύναμη των κανονικών εκφράσεων είναι ότι
να καθορίσετε τα πρότυπα δεν είναι μόνο χαρακτήρες εδώ.
Έτσι, σε όλη τη διαδρομή μέχρι τον τελικό εκ νέου, ξεκίνησε με το αριστερό περισσότερο και ήταν άπληστοι.
Ας δούμε - τι άλλο θα μπορούσαμε να αναζητήσουμε.
Υποθέτω ότι ένα πράγμα, αν ήταν ενδιαφέρονται να ψάχνει για τις αντωνυμίες που και ο ίδιος,
μπορείτε να ελέγξετε για s είναι ίσο με 0 ή 1
και η έκφραση ο ίδιος, και αυτό είναι κατά πάσα πιθανότητα δεν πρόκειται να επιστρέψει -
OH, υποθέτω ότι επέστρεψε γιατί εκεί εξετάζουμε τη δύναμη, εκείνη την ημέρα, εδώ είναι.
Ας προσπαθήσουμε διευκρινίζοντας ότι αυτό πρέπει να γίνεται κατά την έναρξη της κάτι.
Ας δούμε αν αυτό πέφτει.
Έτσι, μπορούμε να κάνουμε το λίπος, και εκεί δεν έχουμε τίποτα γιατί και ο ίδιος
δεν εμφανίζονται σε αυτήν την φράση.
Μεγάλη. Εντάξει - έτσι πίσω με τη γάτα εδώ.
Έτσι, πολύπλοκα σχήματα βλάπτει τον εγκέφαλο.
Έτσι ώστε είναι ο λόγος που χρησιμοποιούμε συνήθεις εκφράσεις για να αποφύγετε αυτά τα προβλήματα.
>> Τόσο εδώ είναι μερικές άλλες χρήσιμες λειτουργίες που μπορείτε να παίξετε γύρω με.
Κοιτάξαμε αναζήτησης σήμερα, αλλά μπορείτε επίσης να χρησιμοποιήσετε αγώνα, διάσπαση, findall και ομάδες.
Έτσι, άλλα δροσερά πράγματα που μπορείτε να κάνετε με κανονικές εκφράσεις, εκτός από απλά
ψάχνουν για μοτίβα παίρνει ένα μοτίβο και κρατώντας όλους τους αγώνες -
μεταβλητές του - και στη συνέχεια, χρησιμοποιώντας αυτές κωδικό σας αργότερα.
Αυτό μπορεί να είναι αρκετά χρήσιμη. Άλλα πράγματα που μπορεί να μετράει.
Έτσι, μπορούμε να υπολογίζουμε τον αριθμό των εμφανίσεων μιας μοτίβο κανονικής έκφρασης,
και αυτό είναι που μπορούμε να χρησιμοποιήσουμε για τις ομάδες.
Και άλλων τρόπων, καθώς είναι επίσης δυνατές.
Γι 'αυτό ακριβώς θέλω να μιλήσω λίγο περισσότερο για τους άλλους τρόπους που μπορείτε να χρησιμοποιήσετε τις συνήθεις εκφράσεις.
>> Έτσι, μια πιο προηγμένη εφαρμογή είναι σε ελαστικό ταίριασμα.
Έτσι, αν ψάχνετε για ένα κείμενο για την έκφραση, τον Ιούλιο Καίσαρα,
και θα δείτε είτε Γάιου Ιούλιου Καίσαρα ή το όνομα του Ιούλιου Καίσαρα και σε άλλες γλώσσες,
τότε μπορεί επίσης να θέλετε να ορίσετε κάποιο βάρος σε αυτές τις αξίες.
Και αν είναι αρκετά κοντά - αν διασχίζει ένα ορισμένο όριο - τότε θέλετε
να είναι σε θέση να δεχθεί τον Ιούλιο Καίσαρα.
Έτσι, υπάρχουν δύο διαφορετικές υλοποιήσεις για ότι σε μερικές άλλες γλώσσες, καθώς και.
Εδώ είναι μερικά άλλα εργαλεία Regex Pal - ένα πρακτικό μικρό app απευθείας σύνδεση για να
ελέγξτε αν οι κανονικές εκφράσεις σας αποτελείται σωστά.
Υπάρχουν, επίσης, αυτόνομα εργαλεία που μπορείτε να εκτελέσετε από τον υπολογιστή σας
όπως Ultra Pico, και καθώς μόνο βιβλία μαγειρικής.
Έτσι, αν κάνετε ένα έργο που περιλαμβάνει έναν τόνο των κανονικών εκφράσεων
Αυτό είναι πιθανώς ο τόπος για να πάει έξω από το πεδίο εφαρμογής του σήμερα.
Και τότε ακριβώς για να σας δώσει μια αίσθηση του πώς είναι κοινή
υπάρχει grep στο Unix, Perl έχει built-in και C υπάρχει PCRE για το C.
Και τότε όλοι αυτοί οι άλλες γλώσσες έχουν επίσης τακτικές πακέτα έκφρασης
που λειτουργούν με κατ 'ουσίαν την ίδια σύνταξη πήραμε μια γεύση του σήμερα.
PHP, Java, Ruby, και ούτω καθεξής.
>> Google Code Search είναι πραγματικά αξίζει να αναφερθεί? Είναι ένα από τα
σχετικά λίγες εφαρμογές εκεί έξω που επιτρέπει στο κοινό να έχει πρόσβαση
βάση δεδομένων του χρησιμοποιώντας κανονικές εκφράσεις.
Έτσι, αν κοιτάξετε στο Google Code Search, μπορείτε να βρείτε τον κώδικα
αν ψάχνετε για ένα παράδειγμα του πώς μια λειτουργία μπορεί να χρησιμοποιηθεί,
μπορείτε να χρησιμοποιήσετε μια κανονική έκφραση για να διαπιστώσετε ότι η λειτουργία που χρησιμοποιείται σε όλα τα είδη των διαφορετικών περιπτώσεων.
Θα μπορούσατε να δείτε για fwrite, και τότε θα μπορούσε να εξετάσει για τη σημαία της γράψει ή να διαβάσει
αν θέλετε ένα παράδειγμα fwrite που χρησιμοποιείται σε αυτή την περίπτωση.
Έτσι, το ίδιο πράγμα εκεί, και εδώ είναι μερικές αναφορές.
Αυτό θα είναι διαθέσιμα στο διαδίκτυο, καθώς, έτσι πηγαίνει προς τα εμπρός, αν
θέλετε να δείτε Python, grep, Perl - απλά θέλετε να πάρετε κάποια έμπνευση
ή αν θέλετε να δείτε περισσότερο στην θεωρία εδώ είναι μερικές καλές άλμα από τις θέσεις.
Σας ευχαριστώ πολύ.
[CS50.TV]