Использование Python 3, простой скрипт, вроде следующего должен работать, как задумано, но, как представляется, подавиться Юникода строки EMOTE:Python 3 Regex и Unicode Эмоции
import re
phrase = "(╯°□°)╯ ︵ ┻━┻"
pattern = r'\b{0}\b'.format(phrase)
text = "The quick brown fox got tired of jumping over dogs and flipped a table: (╯°□°)╯ ︵ ┻━┻"
if re.search(pattern, text, re.IGNORECASE) != None:
print("Matched!")
Если я заменить слово «лиса» для содержимое фразовой переменной, шаблон действительно соответствует. Я был озадачен тем, почему он не любит эту конкретную строку, хотя мои экспедиции в руководство и переполнение стека не освещали проблему. Из всего, что я могу сказать, Python 3 должен справиться с этим без проблем.
Я пропустил что-то болезненно очевидное?
Редактировать: Кроме того, удаление границ (\ b) не влияет на возможность соответствия строке.
Что бы сделать это лол. Удивительно, как вы можете быть слепым к чему-то, что очевидно, когда вы долго смотрели на проблему. Мне нужны границы слов, хотя для моего конкретного случая, который также, кажется, вызывает проблему. (Цель состоит в том, чтобы избежать изменения проблемы Scunthorpe при совпадении фраз в файле конфигурации, иначе я бы просто использовал «if string in string») –
Не могли бы вы задать новый вопрос с точными требованиями? Что вы подразумеваете под символом 'I * * границы слова? –
Это та же проблема. Предполагая, что «фраза» не жестко закодирована, удаление окружающего \ b знаменует проблему Сканторпа. –