kjo*_*kjo 2 regex unicode ocaml
如何从字符串中删除所有非字母字符?
例如
"Wë_1ird?!" -> "Wëird"
Run Code Online (Sandbox Code Playgroud)
在Perl中,我会这样做=~ s/[\W\d_]+//g.在Python中,我会使用
re.sub(ur'[\W\d_]+', u'', u"Wë_1ird?!", flags=re.UNICODE)
Run Code Online (Sandbox Code Playgroud)
等等.
AFAICT,Str.regex不支持\W,\d等等(我不知道它是否支持Unicode,但不知何故,我对此表示怀疑).
Str不支持Unicode.假设您正在处理UTF-8编码数据.您可以按如下方式使用Uutf和Uucp:
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"
Run Code Online (Sandbox Code Playgroud)