哪些字符可以';t作为url的最后一个字符出现?
我试图从Python中的文本中获取所有url链接。假设这是文本:哪些字符可以';t作为url的最后一个字符出现?,url,input-sanitization,Url,Input Sanitization,我试图从Python中的文本中获取所有url链接。假设这是文本: Go to google.com, and then follow the instructions. 我可以使用string.split()然后逐个检查每个单词。但是,它将返回google.com,(注意逗号)。我可以用另一个函数去掉逗号,但是如果它是goole.com呢或google.com.或诸如此类。从理论上讲,我们是否可以拥有一个有效的url,如www.website.com?知道这个字符不可能是url的一部分,我可以
Go to google.com, and then follow the instructions.
我可以使用
string.split()
然后逐个检查每个单词。但是,它将返回google.com,
(注意逗号)。我可以用另一个函数去掉逗号,但是如果它是goole.com呢
或google.com.
或诸如此类。从理论上讲,我们是否可以拥有一个有效的url,如www.website.com?
知道这个字符不可能是url的一部分,我可以安全地从一个单词的末尾删除哪些字符?对此没有正确的答案
正如您所指出的,URL可以以?
结尾。它也可以以未转义的
或,
或:
或结尾代码>
是一个无保留字符,因此不需要对其进行%
转义
- 其他的是保留的,但是(我认为)它们都可以使用,而无需在有效URL的末尾转义。。。在某些情况下。(以及在不严格符合规范的URL中。)
然而,尽管这些结局都是可能的,但它们都不太可能;i、 e.设计web服务/网站的人通常不会发出URL
因此,您的答案将取决于您如何从何处获取这些URL,以及您打算如何处理它们。你的剥离必然是基于一个启发式的(有用的)。。。因此,调整您的启发式方法,为您的应用程序提供最佳结果
您的google.com
示例由于另一个原因存在问题。它根本不是一个真正的URL,因为它没有协议。作为一个URI,它甚至没有什么意义。。。因为相对于任何绝对URI,google.com
不太可能解析。它实际上是一个DNS名称
现在DNS名称通常有相应的URL(例如,google.com
对应于http://google.com
和https://www.google.com
和一些其他URL),但不一定如此。而且,如果您试图解析正确推断的URL和实际无法工作的URL,则无法可靠地区分它们。(即使尝试连接到URL,也不会总是给出正确的答案。)如果某个字符可以出现在试用URL段中,它可以作为最后一个字符出现<代码>google.com代码>无效,但是,http://foo/when?(应该)。到此结束
。。不管怎么说,有太多的正则表达式可以提取URL;在这里,string.split对于任何类型的泛化都是不够的。