为什么以下正则表达式[^ 0-9!a-zA-z#\\ $%&'\\*\\ + \\ - /= \\?\\ ^ _` \\ {\\ | \\} 〜@ \\.] +对于String.split不起作用?

Md.*_*rim 4 java regex

我有这个正则表达式:

[^0-9!a-zA-z#\\$%&'\\*\\+\\-/=\\?\\^_`\\{\\|\\}~@\\.]+
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用分割电子邮件地址

[Email]info@emerycommunications.com
Run Code Online (Sandbox Code Playgroud)

但是java中的以下代码:

String fileStr = "[Email]info@emerycommunications.com";

String invalidCharacters = "[^0-9!a-zA-z#\\$%&'\\*\\+\\-/=\\?\\^_`\\{\\|\\}~@\\.]+";

String[] tokens = fileStr.split(invalidCharacters);

for (String token:tokens) {
    if (token.contains("@")) {
        System.out.println(token);
    }
}
Run Code Online (Sandbox Code Playgroud)

给出这个输出:

[Email]info@emerycommunications.com
Run Code Online (Sandbox Code Playgroud)

作为invalidCharacters变量封面[,我完全无能为力].

Ian*_*rts 7

您具有A-z字符类,并且方括号字符以ASCII(和Unicode)顺序位于大写字母Z和小写字母a之间.因此]被认为是一个有效而非无效的角色 - 大概是你的意思A-Z.