import re
with open("anti-adblock-killer-filters.txt")as f:
contents=f.read()
pattern=re.compile(r"[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+##")
matches=pattern.finditer(contents)
count=sum(1 for match in matches)
print'There are total HTML Rule With Doamin =',count
pattern=re.compile(r'##')
matches=pattern.finditer(contents)
count3=sum(1 for match in matches)
result=count3-count
print'There are total HTML hiding rule without domain is =',result
print'There are total HTML hiding rule with and without domain is
=',result+count
pattern=re.compile(r'\W[||]')
matches=pattern.finditer(contents)
count2=sum(1 for match in matches)
print'There are total HTTP rule with Domain Anchor =',count2
在此代码中,符号“ ||”显示域名 域标记表示为“ domain =“ 我必须匹配在文件“ domain =”中表示的域标记,所以我的第一个问题是我应该使用哪一个patten来将http规则与域锚和域标记进行匹配? 第二个问题是哪个模式将用于匹配没有域锚和域标记的Http规则 和第三个问题一样 如果我只想将http规则与域标记匹配 那么模式将是什么?
我正在使用anoconda python 3
您的回复将非常受关注。 谢谢。
答案 0 :(得分:0)
尝试一下:
CSS="CSS"
COMMENT="COMMENT"
EXCEPTION="EXCEPTION"
FILTER="FILTER"
def is_comment(line):
return line[0]=="!"
def is_css_rule(line):
return '##' in line
def is_exception_rule(line):
return '@' in line
def is_filter_rule(line):
return not is_comment(line) and not is_css_rule(line)
def get_rule_type(line):
if is_comment(line):
return COMMENT
elif is_css_rule(line):
return CSS
elif is_exception_rule(line):
return EXCEPTION
else:
return FILTER
with open("abc.txt") as f:
for line in f:
print('{:12s} {!r}'.format(get_rule_type(line), line))
注意:这是使用Python3。而且,我们没有使用正则表达式,因此不需要包含re
包。