匹配文字

时间:2019-03-06 12:33:46

标签: python regex

 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

您的回复将非常受关注。 谢谢。

1 个答案:

答案 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包。