Voziniotis-3 Δημοσ. 18 Απριλίου 2014 Δημοσ. 18 Απριλίου 2014 Καλησπέρα. Έχω κολλήσει σε ένα μέρος γιατί δεν μπορώ να βρω το κατάλληλο regex. Μιλάμε για Java πάντα. Με λίγα λόγια θέλω να βρω το σωστό regex για το παρακάτω κομμάτι κώδικα και να μου μένουν οι αριθμοί 1, 3, 5. Δηλαδή ο μετρητής των μεταβλητών. String line = "-8x1-5x3-99999x5"; Strings[] st = line.split("..."); Καμία ιδεά;
Moderators Kercyn Δημοσ. 18 Απριλίου 2014 Moderators Δημοσ. 18 Απριλίου 2014 (-{1})(\\d+)(x{1}) http://ideone.com/VULsOo
Voziniotis-3 Δημοσ. 18 Απριλίου 2014 Μέλος Δημοσ. 18 Απριλίου 2014 Θενξ φιλε. Πρέπει να μάθω να δουλεύω τα regex γαμώ
Moderators Kercyn Δημοσ. 18 Απριλίου 2014 Moderators Δημοσ. 18 Απριλίου 2014 Εγώ αυτό που κάνω είναι να σκέφτομαι: Τι έχω Τι θέλω να πάρω Τι με εμποδίζει να πάρω αυτό που θέλω Από τι αποτελείται αυτό το εμπόδιο Στην περίπτωσή μας: Έχω -8x1-5x3-99999x5 Θέλω 1, 3 και 5 Με εμποδίζουν τα -8x -5x -99999x Και τα 3 τμήματα έχουν ακριβώς ένα "-" στην αρχή, τουλάχιστον έναν αριθμό στη μέση και ακριβώς ένα "x" στο τέλος
sonyxp Δημοσ. 18 Απριλίου 2014 Δημοσ. 18 Απριλίου 2014 Καλησπέρα. Έχω κολλήσει σε ένα μέρος γιατί δεν μπορώ να βρω το κατάλληλο regex. Μιλάμε για Java πάντα. Με λίγα λόγια θέλω να βρω το σωστό regex για το παρακάτω κομμάτι κώδικα και να μου μένουν οι αριθμοί 1, 3, 5. Δηλαδή ο μετρητής των μεταβλητών. String line = "-8x1-5x3-99999x5"; Strings[] st = line.split("..."); Καμία ιδεά; Ε σιγά! μην σκας! κάνε Parsing ... Το προτιμώ καμιά φορά...
sonyxp Δημοσ. 18 Απριλίου 2014 Δημοσ. 18 Απριλίου 2014 Ανάλυση μιας πρότασης και να πάρεις αυτό που ζητάς (αυτό που κάνει το Regex δηλαδή), για αυτήν την δουλειά υπάρχουν τα Regex αλλά προτιμώ χειροκίνητα καμιά φορά... Τέσπα! έχω πολύ καιρό να ασχοληθώ με τα Regex Expressions, στα γρήγορα μπορώ να σου πω ότι το δικό σου μπορεί να λυθεί με 2 περάσματα. 1ο Regex(Input: "-8x1-5x3-99999x5" ) - Βρίσκει οτιδήποτε έχει x και έναν οποιοδήποτε αριθμό στην συνέχεια, το + σημαίνει 1 ή περισσότερους αριθμούς x\d+ Output: -8x1-5x3-99999x5 2ο Regex (Input: "x1 x3 x5" ) - Απλά παίρνεις τους αριθμούς. \d+ Output: x1 x3 x5 Προγραμματιστικά δες το μόνος σου πως θα το κάνεις, λογικά στο τέλος θα έχεις ένα String "1 3 5" και κάντα split με αναγνωριστικό χαρακτήρα το κενό. ΥΓ1: Υπάρχουν οnline εργαλεία που μπορείς να πειραματιστείς: http://www.regexr.com/ ΥΓ2: Τα παραπάνω Regex πιθανόν να μην δουλέψουν σε κάποιο πιο πολύπλοκο String, απλά το έκανα για το συγκεκριμένο Input String ... ψάξου μόνος σου...
defacer Δημοσ. 19 Απριλίου 2014 Δημοσ. 19 Απριλίου 2014 Στη συγκεκριμένη πάντως εγώ δε θα έκανα split αλλά πολύ απλά match το pattern (?<=x)\d+ Live example.
Voziniotis-3 Δημοσ. 23 Απριλίου 2014 Μέλος Δημοσ. 23 Απριλίου 2014 Ωραία τώρα θέλω να δω άμα σε μια γραμμή υπάρχει το μοτίβο προσημο-αριθμος-γραμμα-αριθμος. Target text: -73x1+7x2-3x3+x4-89x5 Regex pattern: (\+|-)([0-9]*)[a-z][0-9] Matches: false. Γιατί μου το βγάζει false? Edit: Άκυρο. ((\+|-)([0-9]*)[a-z][0-9])* και done !!!
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα