python regex: Übereinstimmung einer Zeichenfolge mit nur einer Instanz eines Zeichens

8

Angenommen, es gibt zwei Zeichenfolgen:

%Vor%

Kann ich in Python eine Regex haben, die übereinstimmt, wenn nur ein $ in der Zeichenkette ist? Das heißt, ich möchte, dass der RE auf die erste Phrase passt, aber nicht auf die zweite. Ich habe versucht, etwas wie:

%Vor%

.. sagt "Match, wo Sie ein $ gefolgt von etwas AUSSER für ein anderes $ sehen." Es gab keine Übereinstimmung im $$ Beispiel, aber es gab auch keine Übereinstimmung im $ Beispiel.

Vielen Dank im Voraus!

Einfache Testmethode zum Überprüfen:

%Vor%     
Chris 02.07.2010, 14:31
quelle

5 Antworten

11
%Vor%

Aufschlüsselung von regexp:
^ Anker beim Start der Zeichenkette
[^$]* Null oder mehr Zeichen, die nicht% sind co_de%
$ Vergleiche ein Dollarzeichen mit $ Null oder mehr Zeichen, die nicht% co_de sind%
[^$]* Anker am Ende der Zeichenfolge

    
MattH 02.07.2010, 14:38
quelle
8
%Vor%     
SilentGhost 02.07.2010 14:44
quelle
2

Sie möchten das Komplement einer Zeichenklasse [^] verwenden, um ein beliebiges anderes Zeichen als $ :

zu finden %Vor%

Die Änderungen von Ihrem Original sind wie folgt:

  1. .* ersetzt durch [^$]* . Der neue Begriff [^$] steht für ein anderes Zeichen als $
  2. $ an Zeichenfolge angehängt. Erzwingt, dass die Übereinstimmung bis zum Ende der Zeichenfolge verlängert wird.
  3. re.search ersetzt durch re.match . Entspricht der gesamten Zeichenfolge und keiner Untergruppe davon.
fmark 02.07.2010 14:42
quelle
1
%Vor%     
John La Rooy 02.07.2010 14:39
quelle
1
%Vor%

das sollte den Trick machen

    
dweeves 02.07.2010 14:40
quelle

Tags und Links