2017-03-25 2 views
2

Kann mir jemand sagen, warum diese Regex funktioniert gut auf Oneline Regex-Websites, aber nicht während re.compile() in Python verwenden.Python regex Fehler: schlechtes Zeichen in Gruppenname

ich diese Website verwendet haben: https://regex101.com/ und getestet String ist:

"test": "value" 

Python-Code

x = r'((?(?=")(?:"(?(?<=\\)(?:.)|(?:[^")]))+")|(?:\w+)))(:|~)\s+((?(?=")(?:"(?(?<=\\)(?:.)|(?:[^"]))+")|(?:\w+)))' 
re.compile(x) 

Fehler:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Python27\lib\re.py", line 190, in compile 
    return _compile(pattern, flags) 
    File "C:\Python27\lib\re.py", line 245, in _compile 
    raise error, v # invalid expression 
sre_constants.error: bad character in group name 
+0

Sie verwenden Bedingungen in Ihrer Regex, sie werden nicht von Python Re-Syntax unterstützt. Sie sollten zu python in regex101 wechseln, wenn Sie Ihre Muster testen. –

+0

Wenn Sie regex101 in den Python-Modus wechseln, wird es Ihnen auch sagen, dass es kaputt ist. – jonrsharpe

+0

@SebastianProske Danke, hab es. –

Antwort

0

Wenn Sie über Standard-Wieder Fähigkeiten wollen, versuchen Sie diese: https://bitbucket.org/mrabarnett/mrab-regex

Es ist ein Drop-In-Ersatz von, aber unterstützt viele weitere neue Funktionen, einschließlich bedingte Muster.