2016-10-05 2 views
1

Wenn ich die Codierung wie oben ausgeführt, bekomme ich "Nicht übereinstimmt" für das Ergebnis anstelle von "Produkt /".pattern.match mit Regex funktioniert nicht

Kann mir jemand helfen? Ich habe den regulären Ausdruck mit dem Online-Tool getestet, es zeigt sich gut und entspricht der Zeichenfolge, die ich testen werde.

Vielen Dank für Ihre Hilfe.

+1

Wenn die Strings immer mit dem Präfix 'product' beginnen dann einfach den Anfang/aus dem Regex-Ausdruck weglassen und es sollte gut funktionieren sonst wenn es irgendwo im String aber nicht immer der Anfang ist, benutze re.search() seit Es durchsucht die gesamte Zeichenfolge nach übereinstimmender Teilzeichenfolge. – Akhil

Antwort

1

Ein paar Probleme mit Ihrem Code.
Zuerst gab es keine / am Anfang, zweitens, Sie stellen die Modifikatoren nach den Anruf:

import re 

def test(stest): 
    pattern = re.compile(r'product/([^/]+)'. re.IGNORECASE) 

    result = pattern.match(stest) 
    if result: 
     print(result.group()) 
    else: 
     print("Doesn't match") 

test('product/WKSGGPC104/GGPC-The-Paladin') 

a demo on regex101.com See.

+0

Danke, Kumpel. Es hilft mir wirklich. –

0

Sie verwenden String-Literale, entziehen aber immer noch das \ in Ihrer Zeichenfolge.