用于匹配Unicode模式的java正则表达式
我试图在上传文件时验证文件的内容,但我被Unicode编码卡住了。我对查找不在ASCII范围内的Unicode特殊字符不感兴趣。我正在尝试查找文件内容是否至少包含一个Unicode模式,例如\u0046
例如,我排除了任何包含“script”单词的文件,但是如果该文件包含这个用Unicode编写的单词呢?当然,Java在读取内容时会将其解码为普通字符串,但是如果我不能依赖它呢
所以,就我在互联网上的搜索而言,我看到过类似于\u0046或U+0046的Unicode字符。基于此,我编写了以下正则表达式:
(\\u|U\+)....
这意味着,\u或u+后跟四个字符。这个模式实现了我的愿望,但我想知道是否还有其他方法来编写Unicode字符。它总是\u或u+?在\u或u+之后可以多于或少于4个字符吗
谢谢
# 1 楼答案
符号U+任何数量的十六进制数字属于Unicode,在代码中任何地方都不起作用。在java源代码和*。属性
\u
后跟四个十六进制数字是自动解析的Unicode UTF-16编码要搜索的模式:
或者一根绳子。载于:
对于完整的UTF-32范围,在Java
\Uxxxxxx
以外的其他语言中(六个十六进制字符)是可能的。不幸的是,直到Java8,情况并非如此