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

标签 java regex

我有这个正则表达式:

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

我正在尝试使用

拆分电子邮件地址
[Email]info@emerycommunications.com

但是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);
    }
}

正在给出这个输出:

[Email]info@emerycommunications.com

我完全一无所知,因为 invalidCharacters 变量也涵盖了 []

最佳答案

您的字符类中有 A-z,方括号字符按 ASCII(和 Unicode)顺序位于大写 Z 和小写 a 之间。因此 ] 被认为是有效字符而不是无效字符 - 大概您指的是 A-Z

关于java - 为什么以下正则表达式 [^0-9!a-zA-z#\\$% &'\\*\\+\\-/=\\?\\^_`\\{\\|\\}~@\\.]+ 对于 String.split 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13556357/

相关文章:

java - Firestore 更新 2 个不同的文档

regex - 在 Vim 中添加正则表达式搜索列表

regex - linux - 如何将 sed 与正则表达式一起使用

java - 干燥这些类的最佳方法是什么,除了构造函数之外的所有内容都重复

python - 用 Python 编写分词器

java - 使用正则表达式选择 3 个字母的单词

python - 用于重复 2 个或更多碱基的均聚物过滤器

java - 如何使用 URL 从数据库中打印表中的多条记录

java - 没有配置 CurrentSessionContext

java - 如何解决 "java.net.BindException: Address already in use: JVM_Bind"错误?