Negieren Literalzeichenfolgen in einem Java regulären Ausdruck

stimmen
4

So reguläre Ausdrücke scheinen auf dem längsten mögliche Spiel Spiel. Zum Beispiel:

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());
    }
}

erzeugt Ausgangs

  1. ClarkRalphKentGuyGreenGardnerClarkSupermanKent

Ich möchte diese Ausgabe

  1. ClarkRalphKent
  2. ClarkSupermanKent

Ich habe versucht, Muster wie:

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

dass nicht funktionieren, aber Sie sehen, was ich versuche zu sagen. Ich möchte die Zeichenfolge von Clark Kent, der keine Vorkommen von Kent enthält.

Diese Saite:

ClarkRalphKentGuyGreenGardnerBruceBatmanKent

sollte eine Ausgabe erzeugen,

  1. ClarkRalphKent
Veröffentlicht am 09/12/2008 um 22:15
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
6

vs nur ungern gierig ist dein Freund hier.

Versuchen: Clark.+?Kent

Beantwortet am 09/12/2008 um 22:25
quelle vom benutzer

stimmen
4

Sie wollen einen „nur ungern“, anstatt einen „gierig“ quantifier. Einfach ein Putting? nach dem * sollte es tun.

Beantwortet am 09/12/2008 um 22:27
quelle vom benutzer

stimmen
3

Wenn Sie versucht haben "Clark[^((Kent)*)]Kent", ich glaube , Sie fehlten "Clark((?!Kent).)*Kent"für Null-Breite negativ Vorgriff (scrollen ein wenig nach unten auf den „Look-Around Assertions“ header).

Klammern geben Zeichenanpassung vs. Musteranpassung. So wurde die RegExp versucht , ein einzelnes Zeichen nicht in zu finden (, K, e, n, t, ), *.

Beantwortet am 09/12/2008 um 22:38
quelle vom benutzer

stimmen
2

Verwenden Sie das relunctant ?Suffix: Clark.*?Kent Die Quantoren ?, *, +kann gefolgt werden , ?um anzuzeigen , dass sie so schnell wie möglich stoppen sollte.

sehen http://perldoc.perl.org/perlre.html

Beantwortet am 09/12/2008 um 22:27
quelle vom benutzer

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