"Wëird" 在 Perl 中,我会使用 =~ s/[\W\d_]+//g 来完成此操作。在 Python 中,我会使用 -6ren">
gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:32:09 26 4
gpt4 key购买 nike

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

例如

"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,但不知何故我对此表示怀疑)。

最佳答案

Str 不支持 Unicode。假设您正在处理 UTF-8 编码的数据。您可以使用 UutfUucp如下:

let keep_alpha s =
let b = Buffer.create 255 in
let add_alpha () _ = function
| `Malformed _ -> Uutf.Buffer.add_utf_8 b Uutf.u_rep
| `Uchar u -> if Uucp.Alpha.is_alphabetic u then Uutf.Buffer.add_utf_8 b u
in
Uutf.String.fold_utf_8 add_alpha () s;
Buffer.contents b

# keep_alpha "Wë_1ird?!";;
- : string = "Wëird"

关于regex - OCaml:如何从字符串中删除所有非字母字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26811024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com