2016-05-19 2 views
0

Я пытаюсь получить определенные результаты из ответа Blogger. Я хочу получить свои имена в блогах. Как я могу что-то сделать с Regex? Я попытался разобраться с моей проблемой, но ни один из ответов не помог мне в моем случае, к сожалению.Как использовать регулярное выражение, чтобы найти середину строки

Так что мой ответ выглядит примерно так:

\\x22http://emyblog.blogspot.com/ 

Так что всегда начиная с \\x22http:// и заканчивая .blogspot.com/

Я попытался следующие: Re:

regEx = re.findall(b"""\x22http://(.*)\.blogspot\.com""", r) 

Но к сожалению, он возвратил пустой список. Любая идея о том, как решить эту проблему?

Благодаря,

+1

Удаление 'b', что указывает на байт (и, таким образом, формировала отслеживающий, а не пустой список), ваше выражение работало нормально для меня, производя' [ «emyblog»] '. – TigerhawkT3

+0

@ TigerhawkT3 Если я удалю ** b **, я получаю следующую ошибку ** TypeError: не может использовать шаблон строки для объекта с байтовым ** Я думаю, что ** b ** требуется в Py3.5 – Naomi

+0

Ваш Тогда 'r' является байтовым объектом. Выполнение как выражения, так и строковых байтовых объектов отлично подходит для меня. – TigerhawkT3

ответ

0

использование r'' (строка берется в качестве сырья строка буквального) вместо b''

import re 

pattern = re.compile(r'\x22http://(.*)\.blogspot\.com') 
match = pattern.match('\x22http://emyblog.blogspot.com/') 
match.group(1) 
# 'emyblog' 
4

Использование сырой строки, в противном случае \\x22 интерпретируется как символ " вместо буквальным строка. Не уверен, что метод re.findall является хорошим методом, re.search должен быть достаточным.

Предположим, что ваш байт-строка является:

>>> r = rb'\\x22http://emyblog.blogspot.com/' 

с байт-строк:

>>> res = re.search(rb'\\x22http://(.*)\.blogspot\.com/', r) 
>>> res.group(1) 
b'emyblog' 

С нормальными строками:

>>> res = re.search(r'\\\\x22http://(.*)\.blogspot\.com/', r.decode('utf-8')) 
>>> res.group(1) 
'emyblog' 
+0

Эй, если я использую ** re.searchfindall ** Я получаю ключевую ошибку ** AttributeError: module 're 'не имеет атрибута' searchfindall '** – Naomi

+0

@Naomi: нажмите F5 .......... –

+0

Вы пробовали его без сырой строки? Он работает нормально. На самом деле это не проблема, потому что проблем нет. – TigerhawkT3

0

Это, кажется, работает!

import re 
    text = "\x22http://emyblog.blogspot.com/" 
    regex = re.compile('\x22http://(.*)\.blogspot\.com') 
    print regex.findall(text) 
Смежные вопросы