如何使用正则表达式来查找字符串的中间部分

时间:2016-05-19 21:35:58

标签: python regex

我正试图从Blogger的响应中获得某些结果。我想得到我的博客名称。我如何使用正则表达式进行类似的操作?我试过谷歌搜索我的问题但不幸的是,没有一个答案在我的案例中帮助了我。

所以我的回答看起来像这样:

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

因此,始终以\\x22http://开头,以.blogspot.com/

结尾

我尝试过以下方法:

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

但不幸的是它返回了一个空列表。有关如何解决这个问题的想法吗?

谢谢,

3 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

使用r''(字符串被视为原始字符串文字)而不是b''

import re

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

答案 2 :(得分:0)

这似乎有效!

    import re
    text = "\x22http://emyblog.blogspot.com/"
    regex = re.compile('\x22http://(.*)\.blogspot\.com')
    print regex.findall(text)