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中): 我想提取以下url: http:// somewebpage.com 我找到了使用正则表达式的解决方案,但不适用于地址前有空格的情况。如下: myString = myString.split() index = myString.index('http://') url = ''.join(myString[index:index+2]) 注意,我在每个单词上拆分句子,但只将http部分与紧跟其后的部分连接起来 如果您确实需要空间(我无法想象为什么

假设我有以下字符串(在Python中):

我想提取以下url:

http:// somewebpage.com
我找到了使用正则表达式的解决方案,但不适用于地址前有空格的情况。

如下:

myString = myString.split()
index = myString.index('http://')
url = ''.join(myString[index:index+2])
注意,我在每个单词上拆分句子,但只将
http
部分与紧跟其后的部分连接起来

如果您确实需要空间(我无法想象为什么),请将
'
替换为
'

,如下所示:

myString = myString.split()
index = myString.index('http://')
url = ''.join(myString[index:index+2])
注意,我在每个单词上拆分句子,但只将
http
部分与紧跟其后的部分连接起来

如果您确实需要空间(我无法想象为什么),请将
'
替换为
'

纯正则表达式解决方案:

http://\s[\w\.]+
  • [\w\.]
    查找任何字母或句点
  • +
    查找上述字符1次或多次
    • 纯正则表达式解决方案:

      http://\s[\w\.]+
      
      • [\w\.]
        查找任何字母或句点
      • +
        查找上述字符1次或多次
      试试这个正则表达式:

      >>>mystring = "For further information please visit http:// somewebpage.com and please do not hesitate to contact us"
      
      >>>url = re.findall('http[s]?:// (?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', mystring)[0]
      >>>url
      http:// somewebpage.com
      
      试试这个正则表达式:

      >>>mystring = "For further information please visit http:// somewebpage.com and please do not hesitate to contact us"
      
      >>>url = re.findall('http[s]?:// (?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', mystring)[0]
      >>>url
      http:// somewebpage.com
      
      • http-匹配http序列
      • s?-匹配0或1s(对于https
      • -匹配:
      • /-匹配两个//
      • \s-匹配一个空格
      • \S+-匹配任何非空格字符1次或多次
      正则表达式将匹配:

      http:// somewebpage.com
      https:// somewebpage.com
      http:// 1234.com/test
      
      但不是:

      ftp:// www.test.com.xx
      http://www.google.com
      http:// 
      

      • http-匹配http序列
      • s?-匹配0或1s(对于https
      • -匹配:
      • /-匹配两个//
      • \s-匹配一个空格
      • \S+-匹配任何非空格字符1次或多次
      正则表达式将匹配:

      http:// somewebpage.com
      https:// somewebpage.com
      http:// 1234.com/test
      
      但不是:

      ftp:// www.test.com.xx
      http://www.google.com
      http:// 
      

      您需要哪些协议?@marvel308 only http您需要哪些协议?@marvel308 only http此协议获得的是而不是“http://somewebpage.com”。对不起,这是堆栈溢出的格式问题。我想说的是,在“http://”和url的剩余字符串之间没有空格。很好,我认为解决方案现在可以了。@Ofer Sadan,非常感谢。奇怪的是,我用刮板来刮旧的推文,嵌入的URL总是在协议后面有一个空格。这一个代替了“http://somewebpage.com”。对不起,这是堆栈溢出的格式问题。我想说的是,在“http://”和url的剩余字符串之间没有空格。很好,我认为解决方案现在可以了。@Ofer Sadan,非常感谢。奇怪的是,我用刮板刮旧的推文,嵌入的URL在协议后总是有一个空格。试什么?我们在这里寻找什么?@rick112358正则表达式从字符串返回url。尝试什么?我们在这里找什么?@rick112358正则表达式从字符串返回url。@LukeBalizet谢谢。这个很好用。替换正则表达式输出的空格为我提供了解决方案。@LukeBalizet谢谢。这个很好用。替换regex输出的空间为我提供了解决方案。