Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的正则表达式否定如何否定嵌套类_Java_Regex_Regex Negation - Fatal编程技术网

java中的正则表达式否定如何否定嵌套类

java中的正则表达式否定如何否定嵌套类,java,regex,regex-negation,Java,Regex,Regex Negation,我有下面的程序来替换特殊字符 String a = "fgA9.^"; String b =""; a = a.replaceAll("[^[a-zA-Z0-9]]", b); System.out.println(a); 这将(.^)打印为输出,但我希望正则表达式模式会对字母、数字求反,并替换特殊字符 我可以通过a=a.replaceAll([[^a-zA-Z0-9]],b)查看我的预期输出 这两者之间有什么区别,在这两种情况下我都使用

我有下面的程序来替换特殊字符

      String a = "fgA9.^";
       String b ="";
       a = a.replaceAll("[^[a-zA-Z0-9]]", b);
       System.out.println(a); 
这将(.^)打印为输出,但我希望正则表达式模式会对字母、数字求反,并替换特殊字符

我可以通过
a=a.replaceAll([[^a-zA-Z0-9]],b)查看我的预期输出


这两者之间有什么区别,在这两种情况下我都使用否定

使用嵌套字符类,您创建了一个:

还可以使用联合创建由两个或多个单独的字符类组成的单个字符类。要创建联合,只需将一个类嵌套在另一个类中,例如
[0-4[6-8]]
。这个特定的联合创建了一个与数字
0
1
2
3
4
6
7
8
匹配的单字符类

“[^[a-zA-Z0-9]]”
正则表达式匹配字母数字字符,因为模式由匹配ASCII字母和数字的
[^]
(忽略空联合部分)和
[a-zA-Z0-9]
组成

[[^a-zA-Z0-9]]
模式中,您指出了一个否定字符类
[^a-zA-Z0-9]
,该类与ASCII字母/数字以外的任何字符匹配,并与空部分合并,再次被忽略


[0-4[6-8]
regex在语义上完全等同于
[0-46-8]
,在组合否定字符类和肯定字符类时可以观察到更实际的并集值。例如,
[^\p{L}[a-c]+
将匹配除字母以外的一个或多个字符(
[^\p{L}]
)和三个小写的
a
b
c
字符。

您使用了字符类并集。