我有在Java中的正則表達式的問題無效的轉義序列(有效問卷是 B 牛逼 n ˚F r 」 」 )
當我嘗試使用這個表達式:
^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$
我收到以下錯誤
"Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \)"
我不知道如何處理錯誤。 我已經嘗試了反斜槓,但沒有奏效。 我希望有人能夠幫助我用這個。
感謝
我有在Java中的正則表達式的問題無效的轉義序列(有效問卷是 B 牛逼 n ˚F r 」 」 )
當我嘗試使用這個表達式:
^(?:(?:([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
是不是那些定義的特殊符號之一使用\
,這意味着你有以逃避它(通過在符號前添加額外的\
)。
幫我用Java來解決這個「/ ^(?:HTTPS:\/\ /)?(?:WWW \)(?: youtu \ .BE \/| YouTube的\ .COM \ /(?: ??嵌入\/| v \/|手錶\ v = |觀看\ + v =))((\ W | - ){11})(?:?\ S +)$ /」 – Ashu 2016-11-25 08:58:14
每當你用Java編寫的正則表達式,請記住逃脫定義正則表達式的字符串中使用的\
字符。換句話說,如果你的正則表達式包含一個\
,那麼你必須寫兩個\\
。例如,你的代碼應該是這樣的:
^(?:(?:([01]?\\d|2[0-3]):)?([0-5]?\\d):)?([0-5]?\\d)$
爲什麼,你問?因爲Java的字符串,\
是用來表示特殊字符轉義字符(例如:標籤,新的生產線,等等),如果一個字符串包含\
那麼它必須轉義,在它前面前面加上另一個\
。因此,\\
。
爲了記錄在案,here是列出了有效的轉義字符及其含義Java語言規範頁面,注意最後一個:
\b backspace
\t horizontal tab
\n linefeed
\f form feed
\r carriage return
\" double quote
\' single quote
\\ backslash
您可以使用記事本++用查找/與//
更換是什麼點用''替換'/'?它是'''',它在正則表達式或字符串文字中是特殊的,所以它需要轉義。 – Pshemo 2016-10-19 10:28:06
這是Java錯誤還是Regex錯誤? – Matthew 2013-04-23 20:53:33
那麼你有一個\ d,它不是在有效的 – phil 2013-04-23 20:54:08
加倍反斜槓應該工作。你確定你沒有錯過嗎? – Philipp 2013-04-23 20:55:23