Столкнулся с проблемой в регулярном выражении
У меня есть текстовый файл, который содержит некоторые запросы, как показано ниже.
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