Eru Iluvatar Δημοσ. 15 Δεκεμβρίου 2018 Δημοσ. 15 Δεκεμβρίου 2018 Ας υποθέσουμε πως ψάχνω δυο λέξεις κλειδιά (brown και dog) στην παρακάτω πρόταση: The quick brown fox jumps over the lazy dog. Αναρωτιέμαι αν υπάρχει τρόπος να ψάξω σε έναν editor (έχω Atom, Sublime & Notepad++) αυτές τις δύο λέξεις κλειδία ταυτόχρονα. Υπάρχει κάτι built-in γι' αυτά τα προγράμματα ή έστω κάποιο add-in που να κάνει τη δουλεία; Ευχαριστώ
terminator-x Δημοσ. 15 Δεκεμβρίου 2018 Δημοσ. 15 Δεκεμβρίου 2018 (επεξεργασμένο) Στο notepad++ με ctrl+f πας στο mark και γράφεις brown|dog στη συνέχεια στο search mode επιλέγεις Regular expression και μετά mark all. Επεξ/σία 15 Δεκεμβρίου 2018 από terminator-x
kaliakman Δημοσ. 15 Δεκεμβρίου 2018 Δημοσ. 15 Δεκεμβρίου 2018 11 λεπτά πριν, Eru Iluvatar είπε Ας υποθέσουμε πως ψάχνω δυο λέξεις κλειδιά (brown και dog) στην παρακάτω πρόταση: The quick brown fox jumps over the lazy dog. Αναρωτιέμαι αν υπάρχει τρόπος να ψάξω σε έναν editor (έχω Atom, Sublime & Notepad++) αυτές τις δύο λέξεις κλειδία ταυτόχρονα. Υπάρχει κάτι built-in γι' αυτά τα προγράμματα ή έστω κάποιο add-in που να κάνει τη δουλεία; Ευχαριστώ Ναι αυτό που θες μπορεί να γίνει με regular expressions σε sublime και vs code από ότι ξέρω. Π.χ VS Code , Sublime . Γενικότερα όπως σου είπα και στο άλλο thread για τέτοια θέματα το grep είναι ακριβώς αυτό που χρειάζεσαι αλλά είναι σε unix.
Eru Iluvatar Δημοσ. 15 Δεκεμβρίου 2018 Μέλος Δημοσ. 15 Δεκεμβρίου 2018 2 λεπτά πριν, terminator-x είπε Στο notepad++ με ctrl+f πας στο mark και γράφεις brown|dog στη συνέχεια στο search mode επιλέγεις Regular expression και μετά mark all. Ευχαριστώ. Αυτός ο κώδικας ψάχνει το ένα ή το άλλο και όχι τα δύο μαζί.
terminator-x Δημοσ. 15 Δεκεμβρίου 2018 Δημοσ. 15 Δεκεμβρίου 2018 Τότε δεν κατάλαβα καλά. Δεν ψάχνεις έναν τρόπο να σου γίνει highlighted το brown και dog μαζί?
Eru Iluvatar Δημοσ. 15 Δεκεμβρίου 2018 Μέλος Δημοσ. 15 Δεκεμβρίου 2018 1 λεπτό πριν, terminator-x είπε Τότε δεν κατάλαβα καλά. Δεν ψάχνεις έναν τρόπο να σου γίνει highlighted το brown και dog μαζί? Βρήκα αυτό σε Sublime Text: Αναφορά σε κείμενο brown.+dog
marios28 Δημοσ. 15 Δεκεμβρίου 2018 Δημοσ. 15 Δεκεμβρίου 2018 8 λεπτά πριν, Eru Iluvatar είπε brown.+dog Μια χαρά. Αν θες να πιάσεις και το browndog χρησιμοποίησε brown.*dog 1
k33theod Δημοσ. 15 Δεκεμβρίου 2018 Δημοσ. 15 Δεκεμβρίου 2018 (επεξεργασμένο) Αν υποθέσουμε γιατί μόνο υποθέσεις μπορούμε να κάνουμε ότι θες οι δύο λέξεις να βρίσκονται στην ίδια πρόταση ψαχνεις κάτι λοιπόν με . κενό χαρακτήρες χωρίς τελεία 0 ή περισσότερους κενό brown κενό χαρακτήρες χωρίς τελεία 0 ή περισσότερους κενό fox χαρακτήρες 0 ή περισσότερους . Πώς το κάνεις αυτό; https://www.regular-expressions.info/ Μπορεί να σου φένεται δύσκολο αλλά μόλις καταλάβεις 2-3 πράγματα από regex είσαι έτοιμος και έχεις και ένα βέλος στη φαρέτρα γιατί θα το ξαναχρειαστείς σίγουρα. Προσοχή η τελεία είναι special character και πρέπει να την κάνεις escape. Επεξ/σία 15 Δεκεμβρίου 2018 από k33theod
Eru Iluvatar Δημοσ. 15 Δεκεμβρίου 2018 Μέλος Δημοσ. 15 Δεκεμβρίου 2018 Μόλις τώρα, k33theod είπε Αν υποθέσουμε γιατί μόνο υποθέσεις μπορούμε να κάνουμε ότι θες οι δύο λέξεις να βρίσκονται στην ίδια πρόταση ψαχνεις κάτι λοιπόν με . κενό χαρακτήρες χωρίς τελεία 0 ή περισσότερους κενό brown κενό χαρακτήρες χωρίς τελεία 0 ή περισσότερους κανό fox χαρακτήρες εως τελεία 0 ή περισσότερους . Πώς το κάνεις αυτό; https://www.regular-expressions.info/ Μπορεί να σου φένεται δύσκολο αλλά μόλις καταλάβεις 2-3 πράγματα από regex είσαι έτοιμος και έχεις και ένα βέλος στη φαρέτρα γιατί θα το ξαναχρειαστείς σίγουρα. Προσοχή η τελεία είναι special character και πρέπει να την κάνεις escape. Το έχω καταλάβει. Είναι κάτι που πρέπει να μάθω καλά. Σε πρώτη φάση, οι λέξεις να είναι μέσα στην ίδια πρόταση. Μπορεί να χρειαστεί όμως να είναι και στην ίδια παράγραφο.
k33theod Δημοσ. 15 Δεκεμβρίου 2018 Δημοσ. 15 Δεκεμβρίου 2018 (επεξεργασμένο) 4 λεπτά πριν, Eru Iluvatar είπε Το έχω καταλάβει. Είναι κάτι που πρέπει να μάθω καλά. Σε πρώτη φάση, οι λέξεις να είναι μέσα στην ίδια πρόταση. Μπορεί να χρειαστεί όμως να είναι και στην ίδια παράγραφο. Στήν παράγραφο τα πράγματα απλουστεύουν γιατί ψάχνεις αρχή κειμένου ή παραγράφο χαρακτήρες δεν σε νοιάζει τι brown χαρακτήρες δεν σε νοιάζει τι fox χαρακτήρες δεν σε νοιάζει τι παράγραφο ή τελος αρχείου. Επεξ/σία 15 Δεκεμβρίου 2018 από k33theod
Eru Iluvatar Δημοσ. 15 Δεκεμβρίου 2018 Μέλος Δημοσ. 15 Δεκεμβρίου 2018 2 ώρες πριν, k33theod είπε Στήν παράγραφο τα πράγματα απλουστεύουν γιατί ψάχνεις αρχή κειμένου ή παραγράφο χαρακτήρες δεν σε νοιάζει τι brown χαρακτήρες δεν σε νοιάζει τι fox χαρακτήρες δεν σε νοιάζει τι παράγραφο ή τελος αρχείου. Τα πράγματα γίνονται λίγο πιο περίπλοκα αν θέλεις να κάνεις extract κείμενο το οποίο ξεχωρίζει μέσω white space. Θα δώσω ένα παράδειγμα: Αναφορά σε κείμενο <DIV The roars of lions that refuse the chain, The grunts of bristled boars, and groans of bears, And herds of howling wolves that stun the sailors' ears. </DIV> Έχω χρησιμοποιήσει τον παρακάτω κώδικα: Αναφορά σε κείμενο <DIV.+roars.+lions.+DIV> Αλλά δεν μου κάνει highlight από το <DIV sto DIV> μαζί με όλο το περιεχόμενο μέσα.
pmav99 Δημοσ. 15 Δεκεμβρίου 2018 Δημοσ. 15 Δεκεμβρίου 2018 (επεξεργασμένο) Οι regex είναι ένα πολύ χρήσιμο εργαλείο μεν αλλά έχουν περιορισμούς + είναι σπασαρχίδικες. Επίσης υπάρχουν πολλά και διαφορετικά implementations τα οποία δεν είναι 100% compatible μεταξύ τους. Τα απλά βέβαια είναι συνήθως ίδια. Στην περίπτωση σου θες να δώσεις ένα flag για να κάνει match και το newline character γιατί από default το κείμενο εξετάζεtαι γραμμή γραμμή και όχι όλο μαζί. Δες πχ εδώ: https://docs.python.org/3/library/re.html#re.DOTALL https://regex101.com/r/RLzYg6/1 Πιθανά τέτοιο flag να μην υπάρχει στο sublime... edit Για την ιστορία, εν γένει αντενδείκνυται να χρησιμοποιείς regex για HTML-like parsing. Βέβαια αν θες κάτι απλό είναι συνήθως ΟΚ. https://stackoverflow.com/a/1732454/592289 Επεξ/σία 15 Δεκεμβρίου 2018 από pmav99
Eru Iluvatar Δημοσ. 15 Δεκεμβρίου 2018 Μέλος Δημοσ. 15 Δεκεμβρίου 2018 (επεξεργασμένο) 1 ώρα πριν, pmav99 είπε Οι regex είναι ένα πολύ χρήσιμο εργαλείο μεν αλλά έχουν περιορισμούς + είναι σπασαρχίδικες. Επίσης υπάρχουν πολλά και διαφορετικά implementations τα οποία δεν είναι 100% compatible μεταξύ τους. Τα απλά βέβαια είναι συνήθως ίδια. Στην περίπτωση σου θες να δώσεις ένα flag για να κάνει match και το newline character γιατί από default εξετάζει γραμμή γραμμή το κέιμενο και όχι όλο μαζί. Δες πχ εδώ: https://docs.python.org/3/library/re.html#re.DOTALL https://regex101.com/r/RLzYg6/1 Πιθανά τέτοιο flag να μην υπάρχει στο sublime. Ο κώδικας για Sublime & Notepad++ είναι: Αναφορά σε κείμενο (?s)<DIV.+lions.+wolves.+DIV>. Το Notepad++ έχει επιλογή: mathches newline οπότε γίνεται η δουλεία εκεί έχοντας τα regex ticked. Βέβαια, κι αυτό είναι λίγο προβληματικό γιατί διαλέγει ολα τα πράγματα. Εγώ θα ήθελα κάτι που υπάρχει μόνο μεταξύ των DIV που έχουν τις λέξεις κλειδιά μόνο. Για παράδειγμα, ο κώδικας (?s)<DIV.+lions.+wolves.+DIV> διαλεγει τα πάντα και όχι κάθε παράγραφο μέσα στα DIV. Αναφορά σε κείμενο <DIV The roars of lions that refuse the chain, The grunts of bristled boars, and groans of bears, And herds of howling wolves that stun the sailors' ears. </DIV> Other text <DIV lions and wolves </DIV> Επεξ/σία 15 Δεκεμβρίου 2018 από Eru Iluvatar
ajaxmonkey4hire Δημοσ. 15 Δεκεμβρίου 2018 Δημοσ. 15 Δεκεμβρίου 2018 (επεξεργασμένο) regex brown\s+dog στο notepad++ θα σου βρει brown dog brown dog Brown DoG δεν θα σου βρει browndog brown.dog brown_dog brown-dog Επεξ/σία 15 Δεκεμβρίου 2018 από ajaxmonkey4hire
k33theod Δημοσ. 15 Δεκεμβρίου 2018 Δημοσ. 15 Δεκεμβρίου 2018 (επεξεργασμένο) Αυτά που είναι μέσα σε αγκύλες μπορείς να τα αντικαστήσεις με . με την προυπόθεση ότι ενεργοποιείς την επιλογή DOT MATCHES NEW LINE Αν προσέξεις στην δεύτερη περίπτωση τελειώνει το match πιο κάτω αυτό γίνεται γιατί το dot είναι greedy για να το κάνεις not greedy πρέπει μετά από το dot να βάλεις ? Τα word bountaries χρειάζονται γιατί αλλιώς θα σου κάνει κάνει match και το boars στο laboars πχ Επεξ/σία 15 Δεκεμβρίου 2018 από k33theod
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα