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