基于排除字符集的Python正则表达式搜索

时间:2018-11-18 04:41:59

标签: regex python-3.x

我正在尝试根据正则表达式匹配行以排除某些字符,但没有得到正确的结果。

具体来说,我想从文件中获取所有不包含任何v,w,x,y或z字符的行。

我的代码是:

pat = '[^vwxyz]'
for line in records:
        if re.search(pat, line) != None:
                print(line)

但这仍然显示以下行:

第1行:32.27:用餐:20170317:在克莱德餐厅与弗雷德和吉娜(Big Inc.)一起午餐。

第2行:22.00:旅行:20170317:通行费

第3行:119.56:util:20170319:Verizon Wireless

第4行:284.23:util:20170323:Peoples Gas

第5行:8.98:供应:20170325:天才笔

第6行:23.25:用餐:20170223:洛根机场的晚餐

结果集中应包含第4行和第6行,但其他行则不需要

1 个答案:

答案 0 :(得分:1)

尝试打印与以下模式匹配的行:

^.*[vwxyz].*$

代码:

pat = '^.*[vwxyz].*$'
for line in records:
    # use re.I for case insensitive matching, if you want that
    if not re.search(pat, line):
        print(line)