Я пытаюсь найти слово Gadaffi. Какое регулярное выражение лучше всего искать?
Моя лучшая попытка на данный момент:
\b[KG]h?add?af?fi$\b
Но мне все еще не хватает некоторых журналов. Какие-либо предложения?
Обновление: я нашел довольно обширный список здесь: http://blogs.abcnews.com/theworldnewser/2009/09/how-many-different-ways-can-you-spell-gaddafi.html
Ответ ниже соответствует всем 30 вариантам:
Каддафи Gadafi Gadafy Каддафи Gaddafy Gaddhafi М.Каддафи Каддафи Ghadaffi Каддафи Каддафи Ghaddafy Gheddafi Кадаффи Кадафи Каддафи Каддафи Kazzafi Khadaffy Khadafy Khaddafi Qadafi Каддафи Каддафи Qadhdhafi Qadthafi Qathafi Quathafi Qudhafi Kad'afi
.+
быть единственным действительным регулярным выражением.Ответы:
\b[KGQ]h?add?h?af?fi\b
Арабская транскрипция (Wiki говорит) «Qaḏḏāfī», так что, возможно, добавление Q. И одного H («Каддафи», как упоминается в статье (см. Ниже)).
Кстати, почему есть
$
в конце регулярного выражения?Кстати, хорошая статья на тему:
Каддафи, Каддафи или Каддафи? Почему имя ливийского лидера пишется так по-разному? ,
РЕДАКТИРОВАТЬ
Чтобы соответствовать всем именам в статье, которую вы упомянули позже , это должно соответствовать им всем. Будем надеяться, что это не будет соответствовать многим другим вещам: D
источник
d
также соответствовать ð?Qaḏḏāfī
, регулярное выражениеQaddafi
тоже должно проверять . Если вы хотите поискать и арабскую транскрипцию, просто поищите ее - я не думаю, что есть больше вариантов арабской транскрипции, только для английской транскрипции.?
вместо букв). Хотя это может быть излишним.Легко ...
(Qadaffi|Khadafy|Qadafi|
...)
... он самодокументирован, поддерживается и, если ваш механизм регулярных выражений на самом деле компилирует регулярные выражения (а не интерпретирует их), он скомпилирует тот же DFA, что и более запутанное решение.Написание компактных регулярных выражений похоже на использование коротких имен переменных для ускорения программы. Это помогает, только если ваш компилятор не работает.
источник
Из вашего списка возможных вариантов написания можно отметить одну интересную вещь: в содержащемся списке есть только 3 значения Soundex (если вы игнорируете выброс «Kazzafi»)
G310, K310, Q310
Теперь там есть ложные срабатывания («Годби» также называется G310), но, комбинируя ограниченные удары метафонов, вы также можете их устранить.
Несколько настроек и, скажем, некоторая транслитерация кириллицы, и у вас будет довольно надежное решение.
источник
Используя модуль CPAN Regexp :: Assemble :
Это производит следующее регулярное выражение:
источник
Я думаю, что вы здесь все усложняете. Правильное регулярное выражение так же просто, как:
Это соответствует объединению семи арабских кодовых точек Unicode, которые образуют слово القذافي (т.е. Gadaffi).
источник
Если вы хотите избежать сопоставления вещей, которые никто не использовал (то есть избегать стремления к «. +»), Ваш лучший подход - создать регулярное выражение, содержащее только все альтернативы (например, (Qadafi | Kadafi | ...) ) затем скомпилируйте это в DFA, а затем преобразуйте DFA обратно в регулярное выражение. Предполагая умеренно разумную реализацию, которая даст вам «сжатое» регулярное выражение, которое гарантированно не будет содержать неожиданные варианты.
источник
Если у вас есть конкретный список всех 30 возможностей, просто объедините их вместе с кучей «или». Тогда вы можете быть уверены, что он соответствует только тем вещам, которые вы перечислили, и не более. Ваш двигатель RE, вероятно, сможет оптимизировать в дальнейшем, и, ну, с 30 вариантами выбора, даже если это не так, это все же не имеет большого значения. Попытка возиться с ручным превращением его в «умный» RE не может быть лучше и может оказаться хуже.
источник
Конечно, не самая оптимизированная версия, разделить на слоги, чтобы максимизировать совпадения, пытаясь убедиться, что мы не получаем ложных срабатываний.
источник
Ну, так как вы сопоставляете маленькие слова, почему бы вам не попробовать поисковую систему схожести с расстоянием Левенштейна ? Вы можете разрешить не более k вставок или удалений. Таким образом, вы можете изменить функцию расстояния на другие вещи, которые лучше подходят для вашей конкретной задачи. В библиотеке simMetrics доступно много функций.
источник
Возможной альтернативой является онлайн-инструмент для генерации регулярных выражений из примеров http://regex.inginf.units.it . Дай этому шанс!
источник
Почему бы не сделать смешанный подход? Что-то среднее между списком всех возможностей и сложным регулярным выражением, которое слишком сильно совпадает.
Regex - это сопоставление с образцом, и я не вижу шаблон для всех вариантов в списке. Попытка сделать это также найдет такие вещи, как «Gazzafy» или «Quud'haffi», которые, скорее всего, не являются используемым вариантом и определенно отсутствуют в списке.
Но я вижу шаблоны для некоторых вариантов, и в итоге я получил следующее:
Вначале я перечисляю те, где я не вижу паттерн, затем следуют несколько вариантов, где есть паттерны.
Смотрите это здесь на www.rubular.com
источник
\b
только включены в первом и последней альтернативе.Я знаю, что это старый вопрос, но ...
Ни один из этих двух регулярных выражений не является самым красивым, но они оптимизированы и оба соответствуют ВСЕМ вариантам в оригинальном посте.
"Маленькая красавица" # 1
"Маленькая красавица" # 2
Покойся с миром, Муамар.
источник
Просто дополнение: вы должны добавить «Gheddafi» в качестве альтернативного написания. Таким образом, RE должно быть
источник
По частям:
Примечание: просто хотел попробовать.
источник
Что еще начинается с Q, G или K, имеет ad, z или t в середине и заканчивается на «fi», которые люди фактически ищут?
Выполнено.
Интересно, что меня опускают. Может кто-то оставить ложные срабатывания в комментариях?
источник
kartografi kryptografi Gaddafi Qaddafi gadafi gaddafi katastloofi katastorfi katastrofi khadaffi kadafi kardiyografi gaskromatografi kardiografi kinematografi kromatografi krystallografi kulturgeografi gandolfi grizzaffi gadhafi kadaffi kaddafi khaddafi qaddafi qadhafi quedaffi gordonsCHsKFI
. Однако некоторые из них не являются ложными срабатываниями.[iy]
только вместоi
:gelatinify gentrify ghostlify giddify gladify goutify gratify "Gyula Dessewffy" katasrofy katastrofy khadafy quantify quasi-deify quizzify