Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα. Έχω κολλήσει σε ένα μέρος γιατί δεν μπορώ να βρω το κατάλληλο regex. Μιλάμε για Java πάντα. Με λίγα λόγια θέλω να βρω το σωστό regex για το παρακάτω κομμάτι κώδικα και να μου μένουν οι αριθμοί 1, 3, 5. Δηλαδή ο μετρητής των μεταβλητών.

String line = "-8x1-5x3-99999x5";
Strings[] st = line.split("...");

Καμία ιδεά;

  • Moderators
Δημοσ.

Εγώ αυτό που κάνω είναι να σκέφτομαι:

  1. Τι έχω
  2. Τι θέλω να πάρω
  3. Τι με εμποδίζει να πάρω αυτό που θέλω
  4. Από τι αποτελείται αυτό το εμπόδιο

Στην περίπτωσή μας:

  1. Έχω -8x1-5x3-99999x5
  2. Θέλω 1, 3 και 5
  3. Με εμποδίζουν τα -8x -5x -99999x
  4. Και τα 3 τμήματα έχουν ακριβώς ένα "-" στην αρχή, τουλάχιστον έναν αριθμό στη μέση και ακριβώς ένα "x" στο τέλος
Δημοσ.

Καλησπέρα. Έχω κολλήσει σε ένα μέρος γιατί δεν μπορώ να βρω το κατάλληλο regex. Μιλάμε για Java πάντα. Με λίγα λόγια θέλω να βρω το σωστό regex για το παρακάτω κομμάτι κώδικα και να μου μένουν οι αριθμοί 1, 3, 5. Δηλαδή ο μετρητής των μεταβλητών.

String line = "-8x1-5x3-99999x5";
Strings[] st = line.split("...");

Καμία ιδεά;

 

Ε σιγά! μην σκας! κάνε Parsing ...

 

Το προτιμώ καμιά φορά...

Δημοσ.

Ανάλυση μιας πρότασης και να πάρεις αυτό που ζητάς (αυτό που κάνει το 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 ... ψάξου μόνος σου...

Δημοσ.

Ωραία τώρα θέλω να δω άμα σε μια γραμμή υπάρχει το μοτίβο προσημο-αριθμος-γραμμα-αριθμος.

 

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 !!!

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...