Regex в Python – фиксируйте только точное совпадениеPython

Программы на Python
Ответить
Anonymous
 Regex в Python – фиксируйте только точное совпадение

Сообщение Anonymous »

Код: Выделить всё

import re
fruit_list = ['apple banana', 'apple', 'pineapple', 'banana', 'banana apple',  'kiwi']
fruit = re.compile('|'.join(fruit_list))
fruit_re = [ re.compile(r'\b('+re.escape(fruit)+r')\b') for fruit in fruit_list]
fruit_re.append(re.compile( r'([#@])(\w+)'))

string = "this is pooapple is banana apple #apple"

for ft in fruit_re:

match = re.finditer(ft, string)
print(type(match))
for mat in match:

print(mat.span())
print(mat.group())
print("****************")
Выше приведен код, с которым я работаю. Проблема в том, что этот фрагмент фиксирует #apple и яблоко в #apple. Как обеспечить захват только #apple, а не яблока в #apple.

Код: Выделить всё

(27, 32)
apple
****************
(34, 39)
apple
****************


(20, 26)
banana
****************

(20, 32)
banana apple
****************


(33, 39)
#apple
****************
В приведенном выше выводе меня интересует только #apple (33,39), а не apple(34,39)
Ty

Подробнее здесь: https://stackoverflow.com/questions/791 ... xact-match
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»