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

Posted

技术标签:

【中文标题】如何在erlang中匹配子字符串忽略大小写【英文标题】:How match substring ignoring case in erlang 【发布时间】:2019-02-06 00:18:51 【问题描述】:

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

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

ets:test_ms("WORD", ["wo"++'_', [], ['$_']])

但是,就像WORD 是大写一样,什么都不返回。

谢谢!

【问题讨论】:

【参考方案1】:

在匹配规范中不支持不区分大小写的匹配(或通常在 Erlang 中的匹配)。你基本上有三个选择。

    生成所有案例

    ["wo"++'_', [], ['$_'], "wO"++'_', [], ['$_'], "Wo"++'_', [], ['$_'], "WO"++'_', [], ['$_']]
    

    使用保护表达式(对于较长的单词,因为组合的数量是 2^N)

    [['$1','$2'|'_'],
      ['orelse','=:=','$1',$w,'=:=','$1',$W,
       'orelse','=:=','$2',$o,'=:=','$2',$O],
      ['$_']]
    

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

【讨论】:

感谢您的回复!这种方式是我想象的,但我认为还有另一种能够涵盖更多的通用案例。我认为对于这种情况,有必要使用关系数据库或其他类型的存储,而不是 ETS。

以上是关于如何在erlang中匹配子字符串忽略大小写的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式:忽略区分大小写

Tailwind CSS justify-between 同时忽略子大小

如何在忽略大小写的sql中比较字符串?

jquery easyui combobox怎么设置忽略大小写搜索

如何让字符串数组的Contains忽略大小写

关于正则表达式