我一直在使用正则表达式搜索文档中的所有URL并替换它们,但现在我只想替换主机名,而不是子域或URL的任何其他部分。
例如我想要https://ftp.website.com> https://ftp.mything.com
这是我正在编写的用于清理文档的工具,对于其中的一些内容我是相当新的。任何帮助将不胜感激。谢谢!
到目前为止,这是我快速而肮脏的发现和替换:
import fileinput
import re
for line in fileinput.input():
line = re.sub(
r'^(?:http:\/\/|www\.|https:\/\/)([^\/]+)',
r'client.com', line.rstrip())
line = re.sub(
r'\b(\d{1,3}\.){2}\d{1,3}\b',
r'1.33.7', line.rstrip())
print(line)
我意识到URL解析可以实现这一点,但我希望这能找到文档中的URL,我不想提供它们。也许我只是需要帮助使用正则表达式找到网址并将其传递给urlparse以删除我想要的部分。希望这澄清。
答案 0 :(得分:0)
我的解决方案将URL分为3组:在host,hostname和afterhost:
之前import re
regex = r"^(http[:\/\w\.]*[/.])(\w+)(\.[\w\/]+)$"
target = "http://olddomain.com"
print re.sub(regex,r"\1newdomain\3",target)
# 'http://newdomain.com'
target = "http://ftp.olddomain.com"
print re.sub(regex,r"\1newdomain\3",target)
# 'http://ftp.newdomain.com'
target = "https://sub.sub.olddomain.com/sub/sub"
print re.sub(regex,r"\1newdomain\3",target)
# 'https://sub.sub.newdomain.com/sub/sub'
target = "how.about.this"
print re.sub(regex,r"\1newdomain\3",target)
# 'how.about.this'
答案 1 :(得分:0)
$value = str_contains('This is my name', 'my');
// true
表示删除注释并注释掉文件输入。我把它留在了这里,所以它会按要求工作。
import fileinput
import re
regex = r"(^.*http\://(?:www\.)*)\S+?((?:\.\S+?)*/.*$)"
for line in fileinput.input():
print re.sub(regex,r"\1newdomain\2",line)
# targets = [ "http://olddomain.com/test/test" , "this urel http://www.olddomain.com/test/test dends" ]
#
# for target in targets:
# print re.sub(regex,r"\1newdomain\2",target)