1
我有升壓以下的正則表達式的一個問題:正則表達式和Boost
const boost::regex eComment("^\/\*[\s\S]*?\*\/|^\/\/");
當我運行的程序與此正則表達式,它與消息中止:
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::regex_error> >'
what(): Invalid preceding regular expression prior to repetition operator.
The error occured while parsing the regular expression: '^/*[sS]*?*>>>HERE>>>/|^//'.
這個規則表達式應該找到線在*.cpp
文件中有註釋,但是如果行中有代碼,應該跳過。
我不知道提振什麼,但我想你可能會出現問題。 [\ s \ S]轉換爲「一個空白字符或不是一個空白字符」。我認爲它應該是一個或另一個。通常正斜槓不需要在正則表達式中轉義(除非它是Perl,/是你的分隔符)。 –
我想你想要的是這個。^\ s *(/\*.*?\*/ | //)...行的開頭加零的更多空格,然後是註釋。而評論是「/ *任何數量的字符* /」或「/ /任何」。如果你需要逃避反斜槓,因爲它們在C中是特殊的,那麼它將是^ \\ s *(/\\*.*?\\*/ | //) –
'[\ s \ S] *?'= '1或多個字符中的0或1?'? – BoBTFish