如何在erlang中匹配忽略大小写的子字符串

如何在erlang中匹配忽略大小写的子字符串,erlang,ets,Erlang,Ets,如何通过忽略大写/小写的字符串在ETS表中查找 此代码通过以wo开头的字符串查找: ets:test_ms({"WORD"}, [{{"wo"++'_'}, [], ['$_']}]) 但是,就像WORD是大写一样,不会返回任何内容 谢谢 match spec中不支持不区分大小写的匹配(或Erlang中的匹配)。你基本上有三个选择 生成所有案例 [{{"wo"++'_'}, [], ['$_']}, {{"wO"++'_'}, [], ['$_']}, {{"Wo"++'_'}, [], ['

如何通过忽略大写/小写的字符串在ETS表中查找

此代码通过以
wo
开头的字符串查找:

ets:test_ms({"WORD"}, [{{"wo"++'_'}, [], ['$_']}])
但是,就像
WORD
是大写一样,不会返回任何内容


谢谢

match spec中不支持不区分大小写的匹配(或Erlang中的匹配)。你基本上有三个选择

  • 生成所有案例

    [{{"wo"++'_'}, [], ['$_']}, {{"wO"++'_'}, [], ['$_']}, {{"Wo"++'_'}, [], ['$_']}, {{"WO"++'_'}, [], ['$_']}]
    
  • 使用保护表达式(用于较长的单词,因为组合数为2^N)

  • 使用
    string:casefold/1
    转换
    ets
    表中的数据,并按此键进行搜索


  • 谢谢你的回复!我这样想,但我认为还有一种方法能够覆盖更多的通用案例。我认为,对于这种情况,有必要使用关系数据库或其他类型的存储,而不是ETS。
    [{{['$1','$2'|'_']},
      [{'orelse',{'=:=','$1',$w},{'=:=','$1',$W}},
       {'orelse',{'=:=','$2',$o},{'=:=','$2',$O}}],
      ['$_']}]