Java 无效的转义序列(有效的是\b\t\n\f\r\";&x27;\)
我对java中的正则表达式有问题 当我尝试使用此正则表达式时: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):
^(?:(?:([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+)/”