mehrere Male mit demselben unbekannten Zeichen übereinstimmen

10

Ich habe ein Regex-Problem, das ich nicht lösen kann. Ich weiß wirklich nicht, ob Regex das kann, aber ich muss einen Bereich von Zeichen n mal am Ende eines Musters anpassen. z.B. blahblah [A-Z] {n} Das Problem ist, dass jedes Zeichen, das dem Endbereich entspricht, alle gleich sein muss.

Ich möchte zum Beispiel

finden
  • blahblahAAAAA
  • blahblahEEEE
  • blahblahQQQQQ

aber nicht

  • blahblahADFES
  • blahblahZYYYY

Gibt es ein Regex-Muster, das das kann?

    
Erin Aarested 12.07.2012, 20:46
quelle

3 Antworten

19

Sie können dieses Muster verwenden: blahblah([A-Z])+

Der ist ein Rückverweis auf die erste Erfassungsgruppe, in diesem Fall ([A-Z]) . Und das + passt dieses Zeichen ein oder mehrmals an. Um es zu begrenzen, können Sie + durch eine bestimmte Anzahl von Wiederholungen ersetzen, indem Sie {n} verwenden, z. B. {3} , das es dreimal entspricht.

Wenn die gesamte Zeichenfolge übereinstimmen muss, stellen Sie sicher, dass ^ vorangestellt ist und dass Sie mit $ enden, damit das Muster ^blahblah([A-Z])+$

wird

Sie können hier mehr Rückverweise lesen.

    
Ahmad Mageed 12.07.2012 20:49
quelle
2

In den meisten Regex-Implementierungen können Sie dies erreichen, indem Sie auf eine Erfassungsgruppe in Ihrer Regex verweisen. In Ihrem Beispiel können Sie mit dem folgenden fünf gleiche Großbuchstaben verwenden:

%Vor%

Beachten Sie, dass Sie, um die Regex n -Zeiten zu erreichen, {n-1} verwenden müssen, da eine Übereinstimmung aus der Erfassungsgruppe kommt.

    
Andrew Clark 12.07.2012 20:51
quelle
0

blahblah(.)*\b sollte in fast allen Sprachvarianten funktionieren. (.) erfasst eines von allem, dann stimmt * mit dem ersten überein (beliebig oft).

    
dlras2 12.07.2012 20:51
quelle

Tags und Links