有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用于匹配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) 个答案

  1. # 1 楼答案

    符号U+任何数量的十六进制数字属于Unicode,在代码中任何地方都不起作用。在java源代码和*。属性\u后跟四个十六进制数字是自动解析的Unicode UTF-16编码

    要搜索的模式:

    "\\\\u[0-9A-Fa-f]{4}"
    

    或者一根绳子。载于:

    "\\u"
    

    对于完整的UTF-32范围,在Java \Uxxxxxx以外的其他语言中(六个十六进制字符)是可能的。不幸的是,直到Java8,情况并非如此