Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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 无效的转义序列(有效的是\b\t\n\f\r\";&x27;\)_Java_Regex - Fatal编程技术网

Java 无效的转义序列(有效的是\b\t\n\f\r\";&x27;\)

Java 无效的转义序列(有效的是\b\t\n\f\r\";&x27;\),java,regex,Java,Regex,我对java中的正则表达式有问题 当我尝试使用此正则表达式时: ^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$ 我得到以下错误 "Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \ )" 我不知道如何处理那个错误。 我已经试着把反斜杠加倍了,但没用。 我希望有人能帮我 谢谢这应该有效。^(((?:([01]?\\d|2[0-3]):([0-5]?\\d):

我对java中的正则表达式有问题

当我尝试使用此正则表达式时:

 ^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$  
我得到以下错误

"Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \ )"  
我不知道如何处理那个错误。 我已经试着把反斜杠加倍了,但没用。 我希望有人能帮我

谢谢

这应该有效。
^(((?:([01]?\\d|2[0-3]):([0-5]?\\d):)([0-5]?\\d)$


原因是错误消息中列出的符号具有特殊含义,但
\d
不是使用
\
定义的特殊符号之一,这意味着您必须将其转义(通过在符号前面添加额外的
\
),请记住转义定义正则表达式的字符串中使用的
\
字符。换句话说,如果正则表达式包含一个
\
,则必须编写两个
\
。例如,您的代码应该如下所示:

^(?:(?:([01]?\\d|2[0-3]):)?([0-5]?\\d):)?([0-5]?\\d)$  
为什么,你问?因为在Java的字符串中,
\
是用于表示特殊字符(例如:制表符、新行等)的转义字符,如果字符串包含
\
,则必须通过在其前面加上另一个
\
来转义该字符串本身。因此,
\\

作为记录,Java语言规范页面是否列出了有效的转义字符及其含义,请注意最后一个:

\b  backspace
\t  horizontal tab
\n  linefeed
\f  form feed
\r  carriage return
\"  double quote
\'  single quote
\\  backslash

您可以将notepad++与find/一起使用,并替换为//

这是Java错误还是正则表达式错误?您有一个\d,但它不在有效的\d中。反斜杠应该可以使用。您确定没有遗漏一个吗?尝试将正则表达式转义为“\\d”。Java没有任何类似于
r“raw\strings”的python,也没有类似于
“single\quotes”的perl?用
/
替换
/
有什么意义?它是
\
,在正则表达式或字符串文本中是特殊的,因此需要转义。请帮助我用java解决这个问题“/(?:https?:\/)(?:www\)(?:youtu\.be\/;youtube\.com\/(?:embed\/;v\/;watch\?v=;watch\?+&v=)((\w \-){11})(?:\S+)/”