облицованная проблема в regex

у меня есть текстовый файл, которые содержат некоторые запросы как ниже.

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

от этого я просто хочу запрос, которые запускаются с буквы "l" и концов с "op". я должен сделать с regex.

я попробовал ниже.

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

но я добираюсь

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

нуждаюсь в некоторой ценной помощи.

есть ли любой способ добраться как ниже.

[leptop, leptop, laftop, ноутбук] [карандаш, карандаш, карандаш] [группа, gruop, grop] [книга, buk, bok] [мешок ноутбука]

-1
задан 2 April 2015 в 22:19

2 ответа

Вам нужен конец привязки к строке $ для Вас regex:

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

op$ Соответствия op от конца строки или незадолго до новой строки в конце строки.

4
ответ дан 6 October 2019 в 02:52

Вам на самом деле не нужен regex для этого. string.startswith и string.endswith функция сделает это задание.

$ 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
0
ответ дан 6 October 2019 в 02:52

Другие вопросы по тегам:

Похожие вопросы: