Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式问题需要匹配url的一部分_Python_Regex - Fatal编程技术网

Python 正则表达式问题需要匹配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

我正在用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">'
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如果您没有在正则表达式中指定,或者您有多个
“>
在你反对的同一个字符串上,这是有意义的。最好使用
[^”]
这将使它更加具体。