我正在寻找一个正则表达式将所有非英语和/或阿拉伯语改为下划线“_”
目前我有以下代码可以使用,但我认为我有错误的unicode
范围,因为它允许中文和我的剧本中不需要的其他语言。
$title=~tr/[a-z0-9_\x7f-\xff]/_/cd;
任何帮助将不胜感激
答案 0 :(得分:9)
如果您看到\x7f
和\xff
之间的字节,您的应用程序可能使用UTF-8字节,而不是Unicode字符。在尝试使用此级别之前,请先阅读perldoc perlunicode
,然后decode()
您的字符串。
完成后,您应该可以搜索英语和阿拉伯语字符,例如:
/[\p{ASCII}\p{Arabic}]/
有关您可以使用的其他Unicode属性,请参阅perldoc perluniprops
。
答案 1 :(得分:3)
阿拉伯语(印度语)数字的范围是:\ x {0660} - \ x {0669}
阿拉伯字母的范围是:\ x {0621} - \ x {063A} \ x {0641} - \ x {064A}
包括“Tatweel”在内的阿拉伯语元音的范围是:\ x {040B} - \ x {0652}
阿拉伯语puncation的范围是:\ x {060C} \ x {060D} \ x {061} - \ x {061F} \ x {2E2E} \ x {066A} - \ x {066D}