2015-08-15 6 views
0

Я пытаюсь получить регулярное выражение обратной косой черты, если обратной косой черты нет в test строке, а не в регулярных выражений выражения она работает, я попытался \\ и \\\\регулярное выражение обратной косой черты в питона

Этот мой код:

def getString(): 
    test=',"string":"x\u002fg06HaX0M\u002fuTJh7Q",Bla' 
    m=re.match(r",\"string\":\"([\w\d\\\\]+)\",",test) 
    print(m.group(1)) 

ошибка я получаю:

AttributeError: 'NoneType' object has no attribute 'group' 

Спасибо за вашу помощь.

ответ

2

Кажется, что символы Unicode присутствуют в вашей строке ввода (\ u002f). На входе нет фактического символа обратной косой черты. А также я думаю, что вы хотите, чтобы символы присутствовали внутри двойных кавычек, которые существуют рядом с "string":. Поэтому используйте отрицательный класс символов, например [^"]+, чтобы соответствовать любому символу (включая юникоды), но не двойным кавычками, ноль или более раз.

>>> st=',"string":"x\u002fg06HaX0M\u002fuTJh7Q",Bla' 
>>> re.match(u',"string":"([^"]+)",',st).group(1) 
'x/g06HaX0M/uTJh7Q' 
>>> re.match(r',"string":"([^"]+)",',st).group(1) 
'x/g06HaX0M/uTJh7Q' 
+0

Почему нет фактической обратной косой черты? – Neet33

+0

'\ u002f' - это представление Unicode одного символа. –

+0

'р = '' для линии в text.splitlines(): , если 'строка' в строке: для части в line.split (''): , если 'строка' в части: р = часть m = re.match (u '. * "string": "([^"] +) "', p) .group (1)' Любая идея, почему этот код не декодирует символы Unicode? print (m) дает строку с '\ u002f' – Neet33

Смежные вопросы