我有这个正则表达式:
[^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/