我有以下输入,
OK SYS 10 LEN 20 12 43
1233a.fdads.txt,23 /data/a11134/a.txt
3232b.ddsss.txt,32 /data/d13f11/b.txt
3452d.dsasa.txt,1234 /data/c13af4/f.txt
.
Run Code Online (Sandbox Code Playgroud)
我想提取除包含" OK SYS 10 LEN 20"的行和包含单个"."(点)的最后一行之外的所有输入.也就是说,我想提取以下内容
1233a.fdads.txt,23 /data/a11134/a.txt
3232b.ddsss.txt,32 /data/d13f11/b.txt
3452d.dsasa.txt.1234 /data/c13af4/f.txt
Run Code Online (Sandbox Code Playgroud)
我试过以下,
for item in output:
matchObj = re.search("^(?!OK) | ^(?!\\.)", item)
if matchObj:
print "got item " + item
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为它不会产生任何输出.
mmd*_*bas 45
看到它的实际效果:
matchObj = re.search("^(?!OK|\\.).*", item)
Run Code Online (Sandbox Code Playgroud)
不要忘记.*在负面预测后放置,否则你无法得到任何匹配;-)
if not (line.startswith("OK ") or line.strip() == "."):
print line
Run Code Online (Sandbox Code Playgroud)
使用否定匹配。(另请注意,默认情况下,在正则表达式中,空格很重要,因此不要将内容隔开。或者,使用re.VERBOSE。)
for item in output:
matchObj = re.search("^(OK|\\.)", item)
if not matchObj:
print "got item " + item
Run Code Online (Sandbox Code Playgroud)