#python #regex #search
#python #регулярное выражение #Поиск
Вопрос:
Я прочитал некоторую документацию по re
модулю, который поставляется со встроенным python, но, похоже, я просто не могу понять это. На самом деле, я не совсем уверен, что это то, что я ищу, поэтому позвольте мне объяснить:
У меня огромный словарь. Я хочу иметь возможность вводить критерии поиска, скажем, например hello
, а затем выполнять поиск по словарю и выдавать мне список, подобный этому:
hello, hell, hello world, hello123
. В основном все, что напоминает критерии поиска. Буду ли я использовать регулярное выражение для этого или что-то еще?
Комментарии:
1. Определите «похожий».
2. Все
hell
простоstr.startswith
, но вы должны рассказать больше обhell
этом, т. Е. Каковы критерии для такого рода совпадений.3. Огромный — это несколько тысяч записей для этого конкретного словаря и похожих… ну, возьмем, к примеру, когда вы вводите что-то БЛИЗКОЕ к тому, что вы ищете в Google. в 19 случаях из 20 он определяет, что вы ищете, и ищет это вместо этого.
Ответ №1:
Поскольку вы используете Python, вам следует взглянуть на Xapian, у него отличные привязки к Python.
То, о чем вы просите, намного сложнее, чем для регулярных выражений.
Вам нужен полнотекстовый поиск с выводом и другими трюками для нечеткого сопоставления.
Ответ №2:
Возможно, вы захотите взглянуть на что-то, что может вычислить расстояние Левенштейна (редактировать). Здесь есть отличная статья о том, как создать что-то вроде того, о чем вы говорите, с нуля (на Python! ну и он был портирован на множество других языков).
Возможно, вы не захотите идти по пути «с нуля», но статья даст вам много интересной информации, которая поможет вам решить, какой инструмент имеет правильный уровень сложности для вас. Xapian, как предлагалось выше, Lucene и другие полнотекстовые поисковые системы предоставят такую возможность, и она может быть очень сложной, но опять же, вам может не понадобиться все это.
Ответ №3:
В репозитории PyPI появился новый модуль регулярных выражений (который, возможно, иногда заменит текущий re
модуль Python).
Это позволяет нечеткое сопоставление.