Αναιρώντας κυριολεκτική χορδές σε μια κανονική έκφραση Java

ψήφοι
4

Έτσι κανονικές εκφράσεις φαίνεται να ταιριάζει στο μεγαλύτερο δυνατό αγώνα. Για παράδειγμα:

public static void main(String[] args) {
    String s = ClarkRalphKentGuyGreenGardnerClarkSupermanKent;
    Pattern p = Pattern.compile(Clark.*Kent, Pattern.CASE_INSENSITIVE);
    Matcher myMatcher = p.matcher(s);
    int i = 1;
    while (myMatcher.find()) {
        System.out.println(i++ + .  + myMatcher.group());
    }
}

παράγει έξοδο

  1. ClarkRalphKentGuyGreenGardnerClarkSupermanKent

Θα ήθελα αυτό το προϊόν

  1. ClarkRalphKent
  2. ClarkSupermanKent

Έχω προσπαθήσει Μοτίβα όπως:

 Pattern p = Pattern.compile(Clark[^((Kent)*)]Kent, Pattern.CASE_INSENSITIVE);

ότι δεν λειτουργούν, αλλά θα δούμε τι προσπαθώ να πω. Θέλω το κορδόνι από Clark Kent στην οποία δεν περιέχει εμφανίσεις του Κεντ.

Αυτή η συμβολοσειρά:

ClarkRalphKentGuyGreenGardnerBruceBatmanKent

θα πρέπει να δημιουργήσει εξόδου

  1. ClarkRalphKent
Δημοσιεύθηκε 09/12/2008 στις 22:15
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
6

άπληστοι vs απρόθυμοι είναι ο φίλος σας εδώ.

προσπαθήστε: Clark.+?Kent

Απαντήθηκε 09/12/2008 στις 22:25
πηγή χρήστη

ψήφοι
4

Θέλετε ένα «απρόθυμοι» και όχι ένα «άπληστο» ποσοτικοποίησης. Απλά βάζοντας ένα; μετά * σας θα πρέπει να κάνει το κόλπο.

Απαντήθηκε 09/12/2008 στις 22:27
πηγή χρήστη

ψήφοι
3

Όταν προσπάθησα "Clark[^((Kent)*)]Kent", νομίζω ότι ήταν επιθυμία "Clark((?!Kent).)*Kent"για μηδενικό πλάτος αρνητική ματιά προς τα εμπρός (μετακινηθείτε προς τα κάτω στην κεφαλίδα «Κοιτάξτε, γύρω ισχυρισμοί»).

Βάσεις καθορίσετε ταιριάζουν χαρακτήρα εναντίον ταιριάζουν με την επιλογή. Έτσι, η RegExp προσπαθούσε να βρει έναν χαρακτήρα που δεν (, K, e, n, t, ), *.

Απαντήθηκε 09/12/2008 στις 22:38
πηγή χρήστη

ψήφοι
2

Χρησιμοποιήστε το relunctant ?κατάληξη: Clark.*?Kent Οι ποσοδείκτες ?, *, +μπορεί να ακολουθείται από ?να αναφέρουν ότι πρέπει να σταματήσει το συντομότερο δυνατόν.

βλέπω http://perldoc.perl.org/perlre.html

Απαντήθηκε 09/12/2008 στις 22:27
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more