enfrentou problema na regex

-1

Estou tendo um arquivo de texto que contém algumas perguntas, como abaixo.

leptop
pencil
group
leptop
book
gruop
buk
grop
laftop
pensil
laptop
pancil
laptop bag
bok

a partir disso eu só quero consulta que começam com letra "l" e termina com "op". eu preciso fazer com regex.

eu tentei abaixo.

a = re.search("^l.*op",line).group(0)

mas estou recebendo

leptop
leptop
laftop
laptop
laptop # this one i don't want. because it's coming from the word "laptop bag"

precisa de ajuda valiosa.

Existe alguma maneira de obter como abaixo.

[leptop, leptop, laftop, laptop] [lápis, canetas, pancil] [grupo, grupo, grop] [livro, buk, bok] [bolsa para laptop]

    
por s_m 29.01.2015 / 09:52

2 respostas

4

Você precisa da âncora de fim de linha $ para você regex:

import re
a = re.search("^l.*op$",line).group(0)

op$ Corresponde op do final da string ou logo antes da nova linha no final da linha.

    
por devWeek 29.01.2015 / 09:58
0

Você não precisa realmente de um regex para isso. A função string.startswith e string.endswith fará este trabalho.

$ python3 -c 'import sys
with open(sys.argv[1]) as f:
    for line in f:
        if line.startswith("l") and line.strip().endswith("op"):
            print(line, end="")' file
leptop
leptop
laftop
laptop
    
por Avinash Raj 03.04.2015 / 06:13