OCaml:如何从字符串中删除所有非字母字符?

如何从字符串中删除所有非字母字符?

例如

"Wë_1ird?!"  ->  "Wëird"

在Perl中,我会使用=~ s/[\W\d_]+//g在Python中,我会使用

re.sub(ur'[\W\d_]+', u'', u"Wë_1ird?!", flags=re.UNICODE)

等等。

AFAICT,Str.regex不支持\W\d等等。(我不知道它是否支持Unicode,但是我对此表示怀疑)。

静脉血

我不是regexes和utf的专家,但是如果我在您的鞋子里,那我会使用re2库,这是我的第一个近似值:

open Core.Std
open Re2.Std
open Re2.Infix

let drop _match = ""

let keep_alpha s = Re2.replace ~/"\\PL" ~f:drop s

前三行打开库并将其定义纳入范围。您无需打开库即可使用它,否则需要为每个定义加上前缀。OCaml核心库是以这种方式专门设计的,用户应打开Std子模块以将所有必要的定义带入范围。Re2库来自同一个人,并具有一致的约定。open Re2.Infix将把前缀(和前缀运算符)引入作用域,即~/从字符串创建一个正则表达式。drop函数只是忽略其参数,并返回一个空字符串。我给参数加了下划线,因为这是未使用的参数的约定(编译器尊重)。您也可以只将普通uderscore用作通配符,例如let drop _ = ""接下来是keep_alpha 该函数将用空字符串替换与utf字母类不匹配的任何utf符号,即从输出中将其删除。

更新

我检查了我的代码,并修复了错误。另外,我想展示如何在顶层使用此代码。您有几种选择,但是最简单的方法是使用coretop附带的脚本core它使用utop顶级,因此请确保已安装它:

 $ opam install -y utop

一旦完成,就可以启动顶层:

 $ coretop -require re2

-require re2标志将自动查找并将re2加载到您的顶层。您可以加载其他库,而无需utop使用以下命令重新启动

 # #require "libname";;

第一个#是顶级提示,您不应该键入它,但是第二个是指令的开始,因此请确保实际键入它。任何指令都应从#符号开始utop中还有其他有用的指令,即:

 # #use "filename.ml";;   (* will load and evaluate filename.ml      *)
 # #list;;                (* will list all available packages        *)
 # #typeof "keep_alpha";; (* will infer and print type of expression *)

除非您按;;顺序终止,否则Toplevel不会评估您的代码有时您可能会;;在真实的代码中看到这个丑陋的外观,但这不是必需的,只是说顶层,您希望它在此位置评估您的代码并向您显示结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从Java字符串中删除所有非字母字符?

来自分类Dev

如何从字符串中删除所有字母

来自分类Dev

从C#中的字符串中删除所有非字母字符

来自分类Dev

如何使用正则表达式从字符串中删除所有非字母数字字符(“#”除外)?

来自分类常见问题

Python,从字符串中删除所有非字母字符

来自分类Dev

删除所有非字母字符,保留字符串中的空格

来自分类Dev

从删除所有非字母数字字符的字符串中获取列表

来自分类Dev

替换字符串中的所有非字母

来自分类Dev

字符串删除所有字母

来自分类Dev

如何从字符串以及所有字母中删除特定的特殊字符

来自分类Dev

如何删除字符串中字符(和)之间的所有字母?

来自分类Dev

如何删除字符串中的所有非大写字符?

来自分类Dev

Java从字符串的开头和结尾删除所有非字母数字字符

来自分类Dev

使用RegEx从Python字符串的开头删除所有非字母字符

来自分类Dev

如何删除字符串中的字母

来自分类Dev

如何从字符串中删除除西里尔字母/拉丁字母之外的所有符号?

来自分类常见问题

使用JavaScript从数组中的字符串中删除所有字母字符和前导零

来自分类Dev

如何删除第一个字母(字符串的R向量)之前的所有非字母字符

来自分类Dev

如何从ruby的字符串中删除所有非数字?

来自分类Dev

使用javascript删除字符串中所有非字母数字和任何空格

来自分类Dev

在Python 3中,如何从字符串中删除所有非UTF8字符?

来自分类Dev

如何快速删除字符串中的所有html

来自分类Dev

如何从字符串中删除所有HTML

来自分类Dev

如何删除字符串中的所有空格?

来自分类Dev

如何快速删除字符串中的所有html

来自分类Dev

如何从字符串中删除所有空格?

来自分类Dev

如何删除字符串中的所有前导斜线?

来自分类Dev

如何删除Javascript字符串中的所有非数字字符(减号,点号和逗号除外)?

来自分类Dev

Java:如何从另一个字符串中删除所有出现为一组字符串的字母集合?

Related 相关文章

  1. 1

    如何从Java字符串中删除所有非字母字符?

  2. 2

    如何从字符串中删除所有字母

  3. 3

    从C#中的字符串中删除所有非字母字符

  4. 4

    如何使用正则表达式从字符串中删除所有非字母数字字符(“#”除外)?

  5. 5

    Python,从字符串中删除所有非字母字符

  6. 6

    删除所有非字母字符,保留字符串中的空格

  7. 7

    从删除所有非字母数字字符的字符串中获取列表

  8. 8

    替换字符串中的所有非字母

  9. 9

    字符串删除所有字母

  10. 10

    如何从字符串以及所有字母中删除特定的特殊字符

  11. 11

    如何删除字符串中字符(和)之间的所有字母?

  12. 12

    如何删除字符串中的所有非大写字符?

  13. 13

    Java从字符串的开头和结尾删除所有非字母数字字符

  14. 14

    使用RegEx从Python字符串的开头删除所有非字母字符

  15. 15

    如何删除字符串中的字母

  16. 16

    如何从字符串中删除除西里尔字母/拉丁字母之外的所有符号?

  17. 17

    使用JavaScript从数组中的字符串中删除所有字母字符和前导零

  18. 18

    如何删除第一个字母(字符串的R向量)之前的所有非字母字符

  19. 19

    如何从ruby的字符串中删除所有非数字?

  20. 20

    使用javascript删除字符串中所有非字母数字和任何空格

  21. 21

    在Python 3中,如何从字符串中删除所有非UTF8字符?

  22. 22

    如何快速删除字符串中的所有html

  23. 23

    如何从字符串中删除所有HTML

  24. 24

    如何删除字符串中的所有空格?

  25. 25

    如何快速删除字符串中的所有html

  26. 26

    如何从字符串中删除所有空格?

  27. 27

    如何删除字符串中的所有前导斜线?

  28. 28

    如何删除Javascript字符串中的所有非数字字符(减号,点号和逗号除外)?

  29. 29

    Java:如何从另一个字符串中删除所有出现为一组字符串的字母集合?

热门标签

归档