Chanukah Regex

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

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

Ответы

Ответ 1

В соответствии с 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?/

Ответ 2

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

В 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")

Ответ 3

/^ [ск]? Hann? УКК? А? $/Я

Ответ 4

Что-то вроде C? hann? uk? kah? соответствует большинству распространенных случаев. Там также куча более страстных написаний. "Ханука". Ханука соответствует почти каждому написанию, о котором я мог думать (у него было не менее полумиллиона хитов в Google).

Ответ 5

К счастью, я понимаю иврит - חנוכה

Ответ 6

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

/(Ch|H)anuk?kah/

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

/(Chanukah|Hanukkah)/

Ответ 7

Мне нравится ответ Triptych, но я бы сделал это на один шаг вперед... также в 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")