Java 是什么导致这两个正则表达式的工作方式不同?

Java 是什么导致这两个正则表达式的工作方式不同?,java,regex,Java,Regex,我在Java计算器程序中使用以下正则表达式来标记输入: ((?在[(+/*-^]中,*-^匹配*到^范围内的字符,这是您的问题 但是当您编写[(^+/*-]时,它与(,^,+,/,*或-中的一个匹配 更清楚的例子: [12a-z]将匹配1、2或a和z之间的字符 [12az-]匹配1,2,a,z或-

我在Java计算器程序中使用以下正则表达式来标记输入:

((?在
[(+/*-^]
中,
*-^
匹配
*
^
范围内的字符,这是您的问题

但是当您编写
[(^+/*-]
时,它与
^
+
/
*
-
中的一个匹配

更清楚的例子:

  • [12a-z]
    将匹配
    1
    2
    a
    z
    之间的字符

  • [12az-]
    匹配
    1
    2
    a
    z
    -