我想从主机名中提取服务器类型,并用下划线替换其余字符,以便随后将其与SQLite中的LIKE
模式匹配一起使用
我最初的方法是这样的(这是例外的输出):
>>> host = 'webus01'
>>> location = 'us'
>>> parts = list(host.partition(location))
>>> parts
['web', 'us', '01']
>>> parts[1] = "_" * len(parts[1])
>>> parts[2] = "_" * len(parts[2])
>>> "".join(parts) + ".%"
'web____.%'
但是如果hostname
以location
开头或包含>>> host = 'utilityit01'
>>> pod = 'it'
>>> parts = list(host.partition(location))
>>> parts
['utilityit01', '', '']
>>> parts[1] = "_" * len(parts[1])
>>> parts[2] = "_" * len(parts[2])
>>> "".join(parts) + ".%"
'utilityit01.%'
名称,则此方法将无效:
RegEx
然后我最好使用location
来只匹配数字前的>>> import re
>>> re.sub(r'it\d+.*', '_', 'utilityit01a')
'utility_'
。
re.sub函数似乎很适合完成此任务,但是我不确定如何替换所有字符而不是整个匹配组:
utility_____.%
在这种情况下,输出应为:jQuery(function ($) {
$(".box").click(function() {
$(".box").removeClass("active");
$(this).addClass("active");
$(".boxContent").removeClass("show-content");
var target = $(this).attr("target");
$(".boxContent_" + target).addClass("show-content");
});
});
。
答案 0 :(得分:1)
看起来像您需要的
import re
print(re.sub(r'(it\d+.*)', lambda x: '_'*len(x.group(1))+".%" , 'utilityit01a'))
print(re.sub(r'(us\d+.*)', lambda x: '_'*len(x.group(1))+".%" , 'webus01'))
输出:
utility_____.%
web____.%
答案 1 :(得分:1)
您可以先找到要替换的子字符串,然后根据其长度替换它:
>>> import re
>>> host = 'utilityit01'
>>> substr = re.findall(r'it\d+.*', host)
>>> substr
['it01a']
>>> host.replace(substr[0], len(substr)*'_')
'utility_____'