Столкнулся с проблемой в регулярном выражении

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

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

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

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

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, ноутбук] [карандаш, карандаш, панциль] [группа, групповой, групповой] [книга, бук, бок] [сумка для ноутбука]

2 ответа

Решение

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

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

op$ Матчи op от конца строки или непосредственно перед новой строкой в ​​конце строки.

Вам на самом деле не нужно регулярное выражение для этого. 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
Другие вопросы по тегам