Ханука Regex

Ханука, Ханука, Ханука ... Из-за транслитерации с другого языка и набора символов существует множество способов написания названия этого праздника. Сколько допустимых вариантов написания вы можете придумать?

Теперь напишите регулярное выражение, которое распознает их всех.

Аналогичный вопрос: stackoverflow.com/questions/5365283/…

Andrew Grimm 18.09.2011 13:17

Вероятно, есть значок за то, что вопрос длился двенадцать лет, прежде чем был закрыт. И я пропустил его на двенадцать дней!

gbarry 12.12.2020 10:35

@gbarry даже не 12 лет

Avi Parshan 14.12.2020 19:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
15
3
2 007
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Попробуй это:

  /^[ck]?hann?ukk?ah?$/i

А как насчет середины строки?

Charlie Martin 23.12.2008 05:54

Я думаю, что единственными разрешенными вариантами написания на английском языке являются Hanukkah и Chanukh, так что это что-то вроде

/(Ch|H)anuk?kah/

Или, может быть, даже лучше

/(Chanukah|Hanukkah)/

Я видел полдюжины широко используемых. Если вы хотите быть «Правильным», вам следует использовать еврейские буквы חנוכה, конечно, для людей, которые не умеют читать на иврите, это менее полезно.

Zachary K 22.12.2014 19:06
Вперед не мой любимый еврейский блог, но это довольно интересная статья о написании: blogs.forward.com/forward-thinking/148856/…
Charlie Martin 22.12.2014 20:21

Назовите меня лохом по удобочитаемости.

В Python:

def find_hanukkah(s):
   import re

   spellings = ['hannukah', 'channukah', 'hanukkah'] # etc...

   for m in re.finditer('|'.join(spellings), s, re.I):
      print m.group()



find_hanukkah("Hannukah Channukah, Hanukkah")

Я предпочитаю регулярные выражения. Такие вещи не масштабируются. В какой-то момент вам нужно сломаться и просто использовать регулярное выражение!

BobbyShaftoe 23.12.2008 06:36

Ваше регулярное выражение все равно должно будет кодировать все принятые варианты написания ханука. Моя версия проясняет, что является приемлемым, а что - недопустимым. Кроме того, добавление еще одного написания в мой код тривиально, но регулярное выражение может стать полностью недействительным с помощью одного дополнительного написания.

Triptych 23.12.2008 08:28
Ответ принят как подходящий

Согласно http://www.holidays.net/chanukah/spelling.htm, его можно записать любым из следующих способов:

Chanuka
Chanukah
Chanukkah
Channukah
Hanukah
Hannukah
Hanukkah
Hanuka
Hanukka
Hanaka
Haneka
Hanika
Khanukkah

Вот мое регулярное выражение, которое соответствует всем им:

/(Ch|H|Kh)ann?[aeiu]kk?ah?/

Редактировать: Или так, без веток:

/[CHK]h?ann?[aeiu]kk?ah?/

К сожалению, он также подходит для таких строк, как Khannekkah.

Michael Burr 23.12.2008 06:09

Reg exp, вероятно, не лучшее решение для проверки орфографии.

Ates Goral 23.12.2008 06:12

Да, но я думаю, что в большинстве случаев любая строка, которой она соответствует, которой нет в списке, является просто ошибкой в ​​написании слова (если это слово может быть написано с ошибкой) и должна быть сопоставлена ​​в любом случае.

Jeremy Ruten 23.12.2008 06:12

Я думаю, что регулярное выражение должно соответствовать только тому, чему оно должно соответствовать.

Triptych 23.12.2008 06:13

Я воспринял это просто как загадку.

Michael Burr 23.12.2008 06:13

На сайте, на который я ссылался, говорится, что нет точного английского перевода этого слова ... здесь перечислены только некоторые распространенные варианты написания. Я думаю, что почти каждое слово, которое соответствует этому регулярному выражению, является допустимым способом написания этого слова.

Jeremy Ruten 23.12.2008 06:20

С каких это пор ложные срабатывания не аннулируют регулярное выражение? Я чувствую себя как в сумеречной зоне.

Triptych 23.12.2008 06:21

Все «ложные срабатывания» - это все еще способы написания этого слова. Этот список не является полным списком написаний. (Прочтите мой последний комментарий)

Jeremy Ruten 23.12.2008 06:27

Не думаю, что вы поняли суть моих последних парных комментариев ... «Ханнекка» - правильное написание, даже если его никто не использует. Важно только то, что оно звучит близко к оригинальному слову на иврите.

Jeremy Ruten 23.12.2008 07:00

Это самый короткий, который я мог придумать, чтобы соответствовать и соответствовать только перечисленным случаям: (Ch|H)an(nu|uk|u)kah|(Hanuk|Chanu|Han(u|a|e|i))ka|Khanukkah Khanukkah - странный шар, потому что он заканчивается h, но имеет только вариант с двойным k и одинарным n. Остальное можно объединить в два различных паттерна: Ханука | Ханука | Ханука | Ханука | Ханука | Ханука = (Ch|H)an(nu|uk|u)kah Ханука | Ханука | Ханука | Ханака | Ханека | Ханика = (Hanuk|Chanu|Han(u|a|e|i))ka

Martijn 11.12.2020 16:48

Мне нравится ответ Триптиха, но я бы сделал его на шаг вперед ... также в python:

def valid(spelling):
    import re

    regex_spelling = re.compile(r'^[cCkK]{0,1}han{1,2}uk{1,2}ah$')
    valid = regex_spelling.match(spelling)

    if valid:
        print 'Valid spelling'
    else:
        print spelling, " is not a spelling for the word"

использовать это:

valid("hanukkah")

Этот ответ произвел бы на меня большее впечатление, если бы не импорт внутри функции ...

Grajdeanu Alex 11.12.2020 02:43

Что-то вроде C? Hann? Uk? Kah? соответствует большинству распространенных случаев. Также существует куча странных вариантов написания C? Hann? Uk? Kah? | Han [aei] ka | Khanukkah соответствует почти каждому написанию, которое я мог придумать (это было как минимум полмиллиона просмотров в Google).

((Ch|H|X|Х|Kh|J)[aа](н|n{1,2})(у|ou|[auei])(к|k|q){1,2}[aа]h?)|(חנו?כה)

Это регулярное выражение гораздо более инклюзивное и охватывает все следующие параметры:

Чаннука Ханука Чаннукка Ханука Ханука Ханука Ханука Ханукка Ханука Ханука Ханака Ханека Ханика Ханнука Ханука Ханнукка Ханука Hanoukka Ханука Ханука Ханукка Ханука Янука Ханука Xanuka Ханука Ханука חנוכה חנכה

Другие вопросы по теме