Python 正则表达式问题需要匹配url的一部分
我正在用python搜索html页面 我需要在页面中找到一些东西,所有链接都有一种匹配,然后返回一个洞url 我的链接可以查看此链接Python 正则表达式问题需要匹配url的一部分,python,regex,Python,Regex,我正在用python搜索html页面 我需要在页面中找到一些东西,所有链接都有一种匹配,然后返回一个洞url 我的链接可以查看此链接href=”http://example.com/page/subpage/unik-id-12345“我正试图编写一个小正则表达式来获取样本 href\=\"(.*)\"> 问题是它把所有东西都放在了里面,我找不到如何在href标签中只搜索一些东西 希望您理解并帮助我解决此问题 我想要它搜索什么,例如example.com/page import re s
href=”http://example.com/page/subpage/unik-id-12345“
我正试图编写一个小正则表达式来获取样本
href\=\"(.*)\">
问题是它把所有东西都放在了里面,我找不到如何在href标签中只搜索一些东西
希望您理解并帮助我解决此问题
我想要它搜索什么,例如example.com/page
import re
s = 'href="http://example.com/page/subpage/unik-id-12345">'
res = re.search('href=\"(.+?)\">', s).group(1)
print(res)
# Output: http://example.com/page/subpage/unik-id-12345
顺便说一句,最好使用特定的库,比如lxml,来进行html解析
import re
regex = re.compile('<href="(.*)">')
url = '<href="https://stackoverflow.com/">'
m = regex.search(url)
顺便说一句,最好使用特定的库,比如lxml,来进行html解析。import-re
import re
regex = re.compile('<href="(.*)">')
url = '<href="https://stackoverflow.com/">'
m = regex.search(url)
regex=re.compile(“”)
url=“”
m=regex.search(url)
然后你就可以得到小组了
>>> m.group(0)
'<href="https://stackoverflow.com/">'
>>> m.group(1)
'https://stackoverflow.com/'
>m.group(0)
''
>>>m组(1)
'https://stackoverflow.com/'
PS:如果你想做网页抓取,那么使用专门为此设计的库会更容易,比如beautifulsoup
。您可以在web上轻松找到如何使用它。import re
regex=re.compile(“”)
url=“”
m=regex.search(url)
然后你就可以得到小组了
>>> m.group(0)
'<href="https://stackoverflow.com/">'
>>> m.group(1)
'https://stackoverflow.com/'
>m.group(0)
''
>>>m组(1)
'https://stackoverflow.com/'
PS:如果你想做网页抓取,那么使用专门为此设计的库会更容易,比如
beautifulsoup
。你可以在网上轻松找到如何使用它。你知道regex101.com吗?这是一个调整正则表达式的好工具
如果我正确理解您的问题,那么您正在匹配href=”http://example.com/page/subpage/unik-id-12345“>
,您只想获得http://example.com/page/subpage/unik-id-12345
一种方法是只获取http(s)://,然后是任何非引号的内容:http(s?):\/\/[^”]*
如果您有多个链接,并且只需要href标记中的链接,那么您可能只需要使用正则表达式,然后使用更多操作来提取url。(例如,match.split(\)[1]
)
或者您可以使用类似BeautifulSoup的HTML解析器,您知道regex101.com吗?这是一个调整正则表达式的好工具 如果我正确理解您的问题,那么您正在匹配
href=”http://example.com/page/subpage/unik-id-12345“>
,您只想获得http://example.com/page/subpage/unik-id-12345
一种方法是只获取http(s)://,然后是任何非引号的内容:http(s?):\/\/[^”]*
如果您有多个链接,并且只需要href标记中的链接,那么您可能只需要使用正则表达式,然后使用更多操作来提取url。(例如,match.split(\)[1]
)
或者您可以只使用类似BeautifulSoup的HTML解析器两件事:1)您不应该使用正则表达式来解析HTML。这是
BeautifulSoup
或其他HTML/XML解析器的工作。2) 您使用什么方法访问所需的组<代码>重新匹配(r'href\=\'(.*)\',href='http://example.com/page/subpage/unik-id-12345)组(1)工作正常。问题是默认情况下正则表达式量词是贪婪的,所以“*”意味着尽可能多地匹配(这通常会在您想要的地方读取)。诀窍是使量词变懒,这样它只读取所需的量,而不读取更多。可能重复两件事:1)不应该使用正则表达式解析HTML。这是BeautifulSoup
或其他HTML/XML解析器的工作。2) 您使用什么方法访问所需的组<代码>重新匹配(r'href\=\'(.*)\',href='http://example.com/page/subpage/unik-id-12345)组(1)工作正常。问题是默认情况下正则表达式量词是贪婪的,所以“*”意味着尽可能多地匹配(这通常会在您想要的地方读取)。诀窍是使量词变懒,因此它只读取所需的量,而不读取更多。可能的重复不应该是
?否则它将匹配到string@eddy_hunter如果您没有在正则表达式中指定,或者在同一个字符串上有多个“>
,那么这是有意义的。最好使用[^”]
这会使它更具体。这不应该是
?否则它将匹配到string@eddy_hunter如果您没有在正则表达式中指定,或者您有多个“>
在你反对的同一个字符串上,这是有意义的。最好使用[^”]
这将使它更加具体。