Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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从HTML页面查找匹配URL_Python_Regex - Fatal编程技术网

如何使用正则表达式Python从HTML页面查找匹配URL

如何使用正则表达式Python从HTML页面查找匹配URL,python,regex,Python,Regex,我试图通过Python中html页面的查询字符串匹配以下URL,但无法解决它。我是python的新手 我想将上面的URL与&user\u id=[从\u 0到\u 99的任意数字]&匹配,并在屏幕上打印此URL 没有此&用户id=[从0到99的任何数字]&的URL将不匹配 以下是我的不完整正则表达式代码: https?:\/\/.{0,30}.+[a-zA-Z0-9\/?\+=]{0,30}和用户id=[0-9][0-9]&.*?” 我知道这段代码有很多错误,但是这段代码设法匹配了上面的URL

我试图通过Python中html页面的查询字符串匹配以下URL,但无法解决它。我是python的新手

我想将上面的URL与
&user\u id=[从\u 0到\u 99的任意数字]&
匹配,并在屏幕上打印此URL

没有此
&用户id=[从0到99的任何数字]&
的URL将不匹配

以下是我的不完整正则表达式代码:
https?:\/\/.{0,30}.+[a-zA-Z0-9\/?\+=]{0,30}和用户id=[0-9][0-9]&.*?”

我知道这段代码有很多错误,但是这段代码设法匹配了上面的URL,直到
双qoute

完整的代码如下所示:

import re

reg = re.compile(r'https?:\/\/.{0,30}\.+[a-zA-Z0-9\/?_+=]{0,30}&user_id=[0-9][0-9]&.*?"')
str = '<a href="http://example.com/?query_id=9&user_id=49&token_id=4JGO4I394HD83E" id="838"/>'
result = reg.search(str)
result = result.group()
print(result)

它在URL的末尾显示了
,我知道这不是一个好的正则表达式代码,我想要上面代码的更好版本。

可以对您的正则表达式说几句话:

  • /
    不是特殊的
    re
    字符,无需转义
  • 域不能大于30个字符这一事实是故意的吗?否则,您可以使用
    *
  • 你知道你正在使用的字符串包含有效的URL吗?如果不知道,你可以做一些事情,比如确保域至少有4个字符长,包含不是最后一个字符的句点,等等
  • [0-9][0-9]
    部分还将匹配
    04
    之类的内容,严格来说,这不是0到99之间的数字
  • 考虑到这一点,您可以设计以下更简单的正则表达式:

    reg=re.compile(“https?://.&user_id=[1-9][0-9]?&”)
    
    str='。

    Hi,当然可以使用正则表达式解析html,但也许值得考虑BeautifulSoup。它是一个解析html的包。
    $ python reg.py
    http://example.com/?query_id=9&user_id=49&token_id=4JGO4I394HD83E"