Python使用re.compile查找字符串结尾

Python使用re.compile查找字符串结尾,python,beautifulsoup,Python,Beautifulsoup,使用以下示例,如何利用BeautifulSoup查找(或选择)第二个输入元素 <form> <input id="a:b:c" ...> <input id="a:b" ...> </form> 我尝试使用.find('input',id=re.compile('b'),这当然给了我第一个元素 <form> <input id="a:b:c" ...> <input id="a:b" ...> <

使用以下示例,如何利用BeautifulSoup查找(或选择)第二个输入元素

<form>
<input id="a:b:c" ...>
<input id="a:b" ...>

</form>

我尝试使用.find('input',id=re.compile('b'),这当然给了我第一个元素

<form>
<input id="a:b:c" ...>
<input id="a:b" ...>

</form>
我正在寻找一种不使用FindAll和iterate直接进入第二个的方法

有没有改进正则表达式的方法


还有其他想法吗?

在正则表达式中的b之后添加$,这应该可以做到。

根据,如果您确切知道要查找的ID,可以将其作为字符串而不是正则表达式传递:

soup.findall('input', id='a:b')
否则,如果您总是在寻找与正则表达式匹配的第二个
输入
,文档建议
soup.findall
为您提供一个列表,而不是生成器。这意味着您不需要迭代,因为您可以直接请求第二个结果:

soup.findall('input', id=re.compile('b'))[1]

谢谢,这正是我们需要的。