2017-05-16 9 views
1

Ich versuche, einen regulären Ausdruck zu schreiben, der eine Zeichenfolge scannt und alle Instanzen von "Hallo" findet, mit Groß- und Kleinbuchstaben. Das Problem ist, dass, während eine einfachePython Groß- und Kleinschreibung in String Regex

the_list = re.compile(r'hello') 

nur in der Zeichenfolge „Hallo“ ausreichen würde, würde ich den Ausdruck alle Versionen von „hallo“ zu können, wie finden, mit beiden aktivierten und Kleinbuchstaben, wie :

Hello, HELlo, hEllo, HELLO, heLLO, etc. 

ich habe auch versucht:

the_list = re.compile(r'[a-z][A-Z]hello') 

Aber kein Glück. Kann jemand eine bessere Weise erklären, diesen regelmäßigen Ausdruck zu schreiben?

+2

Verwenden: 'the_list = re.compile (r'hello', re.I)', um es zu ignorieren Fall – anubhava

Antwort

6

Verwenden Sie einfach die IGNORECASE Flagge das re Modul bietet:

the_list = re.compile(r'hello', flags=re.IGNORECASE) 

Wenn Sie weniger schreiben möchten, ist dies ausreichend genug:

the_list = re.compile(r'hello', re.I) 

Seit re.I ist nur eine andere Art re.IGNORECASE des Schreibens

Here ist die Dokumentation für re.IGNORECASE:

Führen Sie die Groß-/Kleinschreibung nicht durch; Ausdrücke wie [A-Z] passen auch zu Kleinbuchstaben. Dies wird durch das aktuelle Gebietsschema nicht beeinflusst und funktioniert wie erwartet für Unicode-Zeichen.

+1

Könnte nützlich sein, dies zu beachten 'flags =' ist optional, so dass 're.I' genug ist –

+1

@ Mr.Xcoder ok, ich habe ein weiteres Beispiel hinzugefügt, auch ich habe das erste behalten, weil es klarer und lesbarer ist. :) – abccd

1

Dies ignoriert den Fall in dem Wort, nach dem Sie suchen. hallo = re.compile (r'hello ', re.I)

Verwandte Themen