我承認自從使用C++以來已經有一段時間了,但從我所知道的情況來看,我的代碼應該可以工作。我試圖從包含代碼的文件中替換/刪除所有塊註釋。我把我正在搜索的整個文件放入一個字符串中,並且該字符串包含換行符。爲什麼這個正則表達式不適用於C++ TR1?
這裏是我的代碼
std::tr1::regex rx1("[/][*][\S\s]*?[*][/]");
stringName = std::regex_replace(stringName, rx1, std::string(""));
據我所知,這應該在這裏包括新線匹配/ *什麼*/
我甚至已經測試了http://gskinner.com/RegExr/,在那裏它匹配完美地阻止評論。問題是,塊註釋並未被取代。這是某種TR1特定的錯誤嗎?
你應該避免反斜槓「\\」 – 2012-02-03 20:01:19
'*?'是合法嗎?儘可能頻繁地匹配,但至少一次?這不等於'+'嗎? – RedX 2012-02-03 20:02:15
@RedX:'?'是對'*'的非貪婪修飾符。 – 2012-02-03 20:03:23