查询 - 不区分大小写和重音

Query - Case and accent insensitive

我正在尝试使用 cloudant 执行正则表达式查询,但不知道如何执行不区分大小写和重音的查询。

我尝试了以下方法(不区分大小写):^.*((?i)<needle>).*$ 但它不起作用。

对于口音(法语),我什至不知道如何开始...

要执行不区分大小写的查询,只需在调用 re:run/3 or re:compile/2 时添加 caseless 选项,例如:

18> re:run(<<"abCd">>, <<"c">>, [caseless]).
{match,[{2,1}]}

我不确定是否支持不区分重音的查询,但您可以尝试使用 [] 指定替代字母,例如:

12> re:run(<<"abęxo"/utf8>>, <<"[eę]"/utf8>>).
{match,[{2,1}]}
13> re:run(<<"abexo"/utf8>>, <<"[eę]"/utf8>>).
{match,[{2,1}]}

如果这还不够,那么您可能需要检查 Unicode support in Erlang and in re in particular 以查看是否支持您想要实现的目标。