J'ai un fichier journal, au moins mille lignespython - ligne d'impression et la liste qui contient match regex
abc.txt:
1. example eg, ham, cheese 350.122.345.8
2. cheese ham eg, example 231.242.1.2
3. Ham cheese, example,e.g 100.200.100.200
4.
5. Ham cheese, example,e.g 100.200.100.200
1000.
Résultat final Je veux:
Imprimer uniquement les lignes qui correspondent au nombre au sein de l'IP plage d'adresses. Il devrait donc imprimer seulement:
2. cheese ham eg, example 231.242.1.2
3. Ham cheese, example,e.g 100.200.100.200
5. Ham cheese, example,e.g 100.200.100.200
J'ai essayé le code suivant, mais incapable d'obtenir le résultat que je veux:
import re
txt=open('/sdcard/Download/abc.txt','r')
pattern=re.compile('(^[2][0-5][0-5]|^[1]{0,1}[0-9]{1,2})\.([0-2][0-5][0-5]|[1]{0,1}[0-9]{1,2})\.([0-2][0-5][0-5]|[1]{0,1}[0-9]{1,2})\.([0-2][0-5][0-5]|[1]{0,1}[0-9]{1,2})$', re.DOTALL)
for line in txt:
if str(pattern) in line:
print line
else:
print 'WRONG LINE:',line
Le résultat qui retourne la liste de ligne complète imprimée et en montrant mon autre Message WRONG LINE.
J'ai vérifié mon regex avec vérificateur en ligne, et il est montrant le bon comportement, correspondant à toutes les adresses IPv4, qui ne dépassent 0,255
S'il vous plaît-moi de l'erreur.
str (motif) en est pas ce que coût média que vous voulez. Vous avez besoin de quelque chose comme 're.search' ou' re.match'. – ForceBru
'si re.search (motif, ligne) print bla' – rock321987
Si vous utilisez un motif compilé, vous devez utiliser ses méthodes de recherche ou de correspondance. https://docs.python.org/2/library/re.html#re.compile – Jasper