2010-03-29 56 views

回答

2
/^[\.:\,()\'\`-]/ 

應該變成

"^[.:,()'`-]" 

在C++中不存在特殊的Perl正則表達式分隔符/,所以正則表達式只是一個字符串。在這些字符串中,您需要注意正確地排除反斜槓(\\,在原始正則表達式中每\)。但在你的例子中,所有反斜槓都是不必要的,所以我完全放棄了它們。

還有其他一些注意事項;據我所知,一些Perl功能(如可變長度lookbehind)在Boost庫中不存在。所以它可能無法簡單地翻譯任何正則表達式。不過,你的例子應該沒​​問題。儘管其中有些很奇怪。 .*[0-9].*將匹配任何包含某個數字的字符串,而不是all numbers

+1

在Perl中不需要內部字符類('[...]')。 – mob 2010-03-29 14:48:24

+0

對。他們沒有必要開始。在某些情況下,不必要的反斜槓甚至可能成爲語法錯誤(例如'\ <')。 – 2010-03-29 14:55:51

3

最重要的區別是,在C++正則表達式都是字符串,因此,所有的正則表達式特殊反斜槓序列(如\w\d應該用雙引號("\\w""\\d"

+0

這個perl表達式怎麼樣:'/ O $ /' $ in perl表達式的結尾是什麼意思? 另一個問題是:當我在boost中編寫例如表達式「^ B_」時,意味着什麼? – Yadollah 2010-04-30 17:09:47

相關問題