2017-09-21 13 views
0
import re 

with open('testt.txt') as infile: 
for line in infile: 
    if 'SF:' in line: 
     line2=re.findall('SF:[\/\w]+.c$',line) 
     print(line2) 

私は取得しています出力

['SF:/x/eng/rlse/DOT/devN_170820_0500/zephyr/src/libzapid/https_util.c'] 
['SF:/x/eng/rlse/DOT/devN_170820_0500/zephyr/src/libzapid/zapid.c'] 
['SF:/x/eng/rlse/capability_update_registration.c'] 

として正常に動作していないが、私は最後に印刷出力として、出力のみを下回る必要があります実際capability_update_registration.ccで終わるが、このラインは、それが

を印刷してはいけません.ccに含まれていたようにそのはregistration.c

['SF:/x/eng/rlse/DOT/devN_170820_0500/zephyr/src/libzapid/https_util.c'] 
['SF:/x/eng/rlse/DOT/devN_170820_0500/zephyr/src/libzapid/zapid.c'] 

としてその行を印刷しています

['SF:/x/eng/rlse/capability_update_registration.cc'] 

答えて

0

ポイントは任意の文字と一致します。あなたがblackslashでそれをエスケープする必要があり、そしてあなたは、文字列にバックスラッシュとして単一のバックスラッシュを維持するために、R修飾子を使用する必要があります。

line2=re.findall(r'SF:[/\w]+\.c$',line) 
+0

を一切その動作していない – vinay

+0

LINE2 = re.findall(r'SF:[\/\んw] + \。c '、line)$が機能しない – vinay

+0

ああ、申し訳ありませんが、スラッシュをエスケープするバックスラッシュを削除するのを忘れていました。 – clemens