2012-03-27 10 views
-3

Ich habe die folgende ZeichenfolgeWie wird ein Leerzeichen am Anfang des Ausdrucks python gefunden?

„Probe“

jedoch in einigen Vorkommnissen gibt es ein oder mehrere Leerzeichen am Anfang sein kann:

„Probe“ oder „Probe“

Ohne Verwendung trimmen, welcher reguläre Ausdruck kann ich verwenden, um Übereinstimmungen zu finden, wenn es einen gibt? Ich verwende (\ s +) für den aktuellen String. Ich möchte, dass der Raum Teil derselben Gruppe ist.

+5

Warum würden Sie nicht nur Trim verwenden? Dies wird als persönlicher Angriff erscheinen, aber ich möchte sagen, dass ich es nicht so meine. Es ist ein ziemlich übliches Muster für Leute geworden, sehr einfache Fragen zu stellen, aber mit lächerlichen Einschränkungen. Meiner Meinung nach, wenn Sie sagen, ohne Trimmung zu verwenden, sollten Sie einen sehr guten Grund angeben, Trimm nicht zu verwenden. – Corbin

+0

Warum nicht Streifen verwenden?In jedem Fall, '\ s *' entspricht Leerzeichen in einem Regex –

+0

Nicht ein persönlicher Angriff, ich weiß, dass Sie trimmen können, aber es wäre bequem, wenn ich nicht schneiden musste. – Rolando

Antwort

1

Sie brauchen keine regulären Ausdrücke:

s = " Sample" 
if s[0] == ' ': 
    # do something 
else: 
    # do something else 

Aber wenn Sie wollen regex:

import re 
s = ' Sample' 
if re.match(r"\s+.+", s): 
    # found space at beginning, do something 
+0

Die Regex sollte etwas wie '\ s +' oder '^ \ s' sein. –

+0

OP sagte 'es kann einen oder mehrere Leerzeichen am Anfang geben', nicht da * wird *, daher das '*'. Aber du hast recht, ich habe das '^' hinzugefügt. – alan

+0

Richtig, die Frage ist nicht klar. Ich dachte, er wollte wissen, ob * am Anfang Leerzeichen vorhanden waren. In diesem Fall wäre diese Regex nicht hilfreich, aber es ist nicht klar, ob OP das ist. Wenn Sie 're.match' verwenden, brauchen Sie übrigens nicht das'^'. –

0

Verwendung finden():

s = " Sample" 
pos = 0 
if s.find(' ') == pos: 
    print 'Space found!' 

Sie dann pos erhöhen können, bis Sie nicht mehr einen Platz finden.

1
" Sample".lstrip() 

Der Grund, dass lstrip prefereable ist ist, dass es eine beliebige Anzahl von versteckten (oder nicht druckbare) Zeichen. Um einen regulären Ausdruck zu erhalten, um alle Purmutationen zu erfassen, ist ein wenig unordentlich. Clear Code ist der beste Code.

Es gibt die Möglichkeit, POSIX-Zeichenklassen innerhalb Ihrer Regex zu verwenden, das Modul re scheint sie jedoch zu diesem Zeitpunkt nicht zu unterstützen. Sie müssen ein anderes Modul verwenden, das die POSIX-Klassen unterstützt (regex 0.1.20120323).

(Anmerkung: Das neu registriert, so konnte ich nicht 'Post mehr als 2 Hyperlinks'.)

Referenzen:

  • docs.python.org/library/string.html „Wenn Zeichen Wird weggelassen oder Keine, Leerzeichen werden entfernt. "

  • stackoverflow.com/questions/9897375/how-to-match-a-space-at-the-beginning-of-the-expression-python „POSIX-Zeichenklassen ... [: space:] \ Dies ist tatsächlich als eine alternative Form von s \ s [\ t \ r \ n \ v \ f] Leer Zeichen "

  • pypi.python.org/pypi/regex " POSIX Zeichenklassen unterstützt werden. behandelt \ p {...}. "

  • http://pypi.python.org/pypi/regex "Alternativer regulärer Ausdruck Modul, um zu ersetzen."

Verwandte Themen