Python 如何指定所需的文本并使该文本显示在正则表达式匹配中?

Python 如何指定所需的文本并使该文本显示在正则表达式匹配中?,python,regex,Python,Regex,我一直在尝试制作一个简单的Python web爬虫程序,并使用正则表达式查找相关链接。我正在试验的站点是wiki,我只想找到URL以/wiki/开头的链接。我可能会将其扩展到站点的其他部分,因此我要求我的代码尽可能动态 我当前使用的正则表达式是 <a\s+href=[\'"]\/wiki\/(.*?)[\'"].*?> 展开括号,使其包含正则表达式的/wiki/部分 <a\s+href=[\'"](\/wiki\/.*?)[\'"].*?> 展开括号,使其包

我一直在尝试制作一个简单的Python web爬虫程序,并使用正则表达式查找相关链接。我正在试验的站点是wiki,我只想找到URL以/wiki/开头的链接。我可能会将其扩展到站点的其他部分,因此我要求我的代码尽可能动态

我当前使用的正则表达式是

<a\s+href=[\'"]\/wiki\/(.*?)[\'"].*?>

展开括号,使其包含正则表达式的
/wiki/
部分

    <a\s+href=[\'"](\/wiki\/.*?)[\'"].*?> 

展开括号,使其包含正则表达式的
/wiki/
部分

    <a\s+href=[\'"](\/wiki\/.*?)[\'"].*?> 

您可以使用HTML解析器,例如:

或使用:


您可以使用HTML解析器,例如:

或使用:


强制性链接:我不明白为什么第一个链接不起作用,但您可以尝试将其简化为]+href=['“]?(/wiki/[^'”>]+)。你真的应该考虑使用HTML解析器中的一个(例如漂亮的汤)你能发布你的代码吗?另外,您是否正在使用
re.match
?也许你需要使用
re.search
re.findall
。啊,现在我明白了。如果希望正则表达式返回/wiki/…stuff..,则需要扩展括号以包含/wiki/部分。强制链接:我不明白为什么第一个不起作用,但您可以尝试将其简化为]+href=['”?(/wiki/[^'>]+)。你真的应该考虑使用HTML解析器中的一个(例如漂亮的汤)你能发布你的代码吗?另外,您是否正在使用
re.match
?也许你需要使用
re.search
re.findall
。啊,现在我明白了。如果希望正则表达式返回/wiki/…stuff..,则需要展开括号以包含/wiki/part.Hi Joel。这似乎是可行的,但我不确定为什么。你能解释一下吗?谢谢!我对正则表达式一无所知,关于正则表达式的教程很残酷。@Paragon:同意。我看到的大多数正则表达式教程都不是很有用。不过,我发现谷歌的有点像样。@Paragon:你可以通过阅读在实践中有效地使用正则表达式。嗨,Joel。这似乎是可行的,但我不确定为什么。你能解释一下吗?谢谢!我对正则表达式一无所知,关于正则表达式的教程很残酷。@Paragon:同意。我看到的大多数正则表达式教程都不是很有用。不过,我发现谷歌的有点像样。@Paragon:你可以通过阅读在实践中有效地使用正则表达式。谢谢,我肯定应该使用这个。然而,与此同时,另一个答案满足了我的迫切需要。谢谢,我一定要用这个。然而,与此同时,另一个答案满足了我的迫切需要。
    <a\s+href=[\'"](\/wiki\/)(.*?)[\'"].*?> 
from lxml import html

for element, attribute, link, pos in html.iterlinks(html_string):
    if attribute == 'href' and link.startswith('/wiki'):
       print(link)
import re
from BeautifulSoup import BeautifulSoup

soup = BeautifulSoup(html_string)
for a in soup.findAll('a', href=re.compile(r'^/wiki')):
    print(a['href'])