2016-05-19 30 views
0

我试图从Blogger的响应中获得某些结果。我想获得我的博客名称。如何用Regex去解决这个问题?我试着用谷歌搜索我的问题,但不幸的是,没有任何答案帮助我解决了这个问题。如何使用正则表达式来查找字符串的中间部分

所以我的反应看起来是这样的:

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

所以它总是先从\\x22http://.blogspot.com/

我试过下面再结束:

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) 
相关问题