我想使用RegEx删除域中的URL。以下是示例网址。但是,当我想在下面的第三个示例中删除URL时。它不起作用。
http://www.domain.com.org
https://www.domain.com.org
http://domain.com.org
如果URL为http://www.domain.com.org,则我的第一个IF条件可以正常工作。我使用split()以点分隔整个URL。 但是,如果我的网址没有www(http://domain.com.org),则该网址无效。在我的FOR循环中,如果它们匹配,我会将x的当前值与regex2结果进行比较,我将通过创建另一个正则表达式来删除URL并离开域并将其添加到我的var(word)<中,将remove()删除。 / p>
我知道还有其他方法可以执行此操作,但是根据我对python和regex的熟练程度,这就是我的处理方法。我的代码真的可行吗,或者我正在做一件不可能的事情,我的代码需要重做?
我是Python的新手,几天前我刚刚学习了RegEx。但是根据测试,我知道我的正则表达式很好。我相信我的代码流确实搞砸了。有想法的人吗?
import re
def domain_name2(url):
word = url.split('.')
print(word)
#regex1 = '\w+\W+www.'
regex2 = '\w+\W+\w+'
result2 = re.search(regex2, url).group()
print(result2)
for x in word:
#if x in re.search(regex1, url).group():
# word.remove(x)
if x in result2:
word.remove(re.search('\w+\W+',x).group())
return word
['http://domain', 'com', 'org']
http://domain
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-324-e34a89862aeb> in <module>
----> 1 domain_name2('http://domain.com.org')
<ipython-input-319-877bb80b77f0> in domain_name2(url)
18 # word.remove(x)
19 if x in result2:
---> 20 word.remove(re.search('\w+\W+',x).group())
21 return word
22
ValueError: list.remove(x): x not in list
答案 0 :(得分:0)
我不确定您到底想要什么,但是您可以解析URL以获得所谓的netloc部分。
from urlparse import urlparse
result = urlparse(url).netloc
答案 1 :(得分:0)
您也可以将regex用于if语句。
import re
string = "https://domain.com.org"
def url_slice(string):
if 'www' in string:
res = re.search('(?<=\.).+', string)
else:
res = re.search('(?<=\/\/).+', string)
return res.group()
print(url_slice(string)) #domain.com.org