代码之家  ›  专栏  ›  技术社区  ›  gbarry

光明节

  •  15
  • gbarry  · 技术社区  · 17 年前

    汉努卡,光明节,光明节…由于另一种语言和字符集的音译,有很多方法可以拼出这个节日的名字。你能想出多少合法拼法?

    现在,编写一个正则表达式来识别所有这些元素。

    7 回复  |  直到 17 年前
        1
  •  13
  •   Paige Ruten    17 年前

    根据 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
  •  3
  •   Kenan Banks    17 年前

    说我可读性差。

    在蟒蛇中:

    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
  •  2
  •   Orentet    17 年前

    幸运的是,我懂希伯来语——

        4
  •  1
  •   chaos    17 年前

    [CK]?hann?乌克兰?啊?美元/我

        5
  •  1
  •       17 年前

    像C?hann?英国?啊?匹配大多数常见情况。还有一些奇怪的拼写c?hann?英国?啊?|汉卡与我能想到的几乎每一个拼写都吻合(至少在谷歌上有50万个点击率)。

        6
  •  0
  •   Charlie Martin    17 年前

    我认为英语中唯一被认可的拼写是光明节和光明节,所以它有点像

    /(Ch|H)anuk?kah/
    

    或者更好

    /(Chanukah|Hanukkah)/
    
        7
  •  0
  •   Robert S.    17 年前

    我喜欢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")