Python 2.7正则表达式遍历字符串

2024-06-25 22:55:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前在BeautifulSoup4中处理的HTML响应中包含以下内容:

<script type="text/javascript">
var n='eut';
var u='user'+'/8/'+'41140658'+n.charAt(2)+n.charAt(0)+n.charAt(1);
document.getElementById('big_pic').src='http://b2.eu.album.com/'+u.charAt(0)+'/'+u+'.jpg';
</script>

我想要实现的是能够提取继承字母('big_pic')。src='http://,在本例中是字母'b'

我试过下面这封信,但我就是不知道信写完后怎么还string:- 你知道吗

my_string = str(re.findall(r'('big_pic').src='http://', the_string))

如何返回字符串中“http://”后面的字母


Tags: textsrchttpstringvarhtmltype字母
2条回答

您可以使用正面的“向后看”:

>>> re.search(r"(?<=\('big_pic'\)\.src='http://).", the_string).group(0)
'b'

findall将返回所有匹配项的数组:

>>> re.findall(r"\('big_pic'\)\.src='http://(.)", the_string)
['b']

因此,在使用findall时,您还应该注意进行所需的匹配

你的实现中有几个错误

首先,如果你知道你要找的字符串,为什么要用regex?您可以简单地搜索字符串。 使用开始字符串的索引和要查找的字符串的长度,您可以简单地检索所需位置的字符

第二,对于起始字符串和字符串内部的引号,都使用单引号,它甚至不应该在没有错误的情况下运行(除非错误是您在此处发布的)

执行这些更改时,您的代码将如下所示:

idx = the_string.find(r"('big_pic').src='http://")
if idx > -1:
        my_string = the_string[idx+24:idx+25]

相关问题 更多 >