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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.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 - Fatal编程技术网

Java正则表达式未编译

Java正则表达式未编译,java,regex,Java,Regex,我有密码 private String regexHHMM = "^([0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$"; 代码未编译,错误为“未关闭的字符类” 这必须是非常基本的东西,是否有任何特定的转义我应该使用,而且我主要感兴趣的是为什么它不能被java编译器接受 更新:我已经试过了 Pattern.quote("^([0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$"); 现在它可以编译了,但是正则表达式现在与HH:MM格式不匹配…您需要删除模

我有密码

private String regexHHMM = "^([0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$";
代码未编译,错误为“未关闭的字符类”

这必须是非常基本的东西,是否有任何特定的转义我应该使用,而且我主要感兴趣的是为什么它不能被java编译器接受

更新:我已经试过了

Pattern.quote("^([0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$"); 

现在它可以编译了,但是正则表达式现在与HH:MM格式不匹配…

您需要删除模式内部的初始开放方括号

^([0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
  ^
应该是:

^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$

您需要移除图案内部的初始开放方括号

^([0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
  ^
应该是:

^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$

很好,我猜它不编译的原因是因为java编译器解析每个字符串?@Gary:字符类可以嵌套在java的任意深度。这叫做字符类联合。@Juanantonigomezmoriano你确定它“无法编译”吗?
regexhmm
的声明只是一个用字符串文本初始化的
String
变量。据我所知,直到运行时调用
Pattern.compile
或其他方法时,它才被解析为正则表达式。“编译器”的行为到底是什么?@ajb:regex在运行时由
Pattern
类编译(通过字符串类中的某个方法隐式编译或显式编译),OP的regex返回
PatternSyntaxException
@nhahtdh Right,“在运行时”。。。但是OP说是编译器做的,并询问“java编译器是否解析每个字符串”…很好,我猜它不编译的原因是因为java编译器解析每个字符串?@Gary:字符类可以在java中任意深度嵌套。这叫做字符类联合。@Juanantonigomezmoriano你确定它“无法编译”吗?
regexhmm
的声明只是一个用字符串文本初始化的
String
变量。据我所知,直到运行时调用
Pattern.compile
或其他方法时,它才被解析为正则表达式。“编译器”的行为到底是什么?@ajb:regex在运行时由
Pattern
类编译(通过字符串类中的某个方法隐式编译或显式编译),OP的regex返回
PatternSyntaxException
@nhahtdh Right,“在运行时”。。。但是OP说是编译器做的,并询问“java编译器是否解析每个字符串”…
Pattern.quote
用于转义字符串中的所有特殊字符,以便在编译时,正则表达式将逐字匹配原始字符串中的字符。
模式。quote
用于转义字符串中的所有特殊字符,以便在编译时,正则表达式将逐字匹配原始字符串中的字符。