2016-07-23 48 views
3

我正在使用下面的代碼嘗試使用正則表達式來匹配符號(例如,我試圖匹配圓形星符號http://graphemica.com/%E2%9C%AA) (0x272A)不匹配,我也嘗試過使用其他符號,它們都不起作用(例如©)。使用std :: wregex不會'匹配'常見符號' pS'

我試過[:S:]\pS\p{S},他們沒有工作,(最後一個拋出異常)

這是一個類似,(但不相同的命名空間),問題作爲一個與增強庫(Common symbols '\p{S}' not been 'matched' using boost wregex

回答

2

ECMAScript 3rd ed。 POSIX正則表達式語法也不支持Unicode類別字符類。你可以使用\u\U爲基礎的字符範圍自己形成它們,但是希望像\p{So}這樣的東西在目前的規範下是失敗的原因。

正如我回答了your other question,如果你真的想使用它們,Boost.Regex通過boost::u32regex支持他們,如果啓用ICU支持內置。 (PCRE/PCRE2也支持它們,但是和大多數C庫一樣,我不願推薦這些代碼用於新的C++代碼。)

+0

感謝您的回答,它現在很合理,爲什麼都不工作。 我很好奇你答案的最後部分,我過去曾經使用過pcre2(我喜歡它),所以我想知道爲什麼你不會推薦它。 – FFMG

+1

@FFMG:因爲它被標記爲「C++」和「C++ 11」,而不是「c」。就個人而言,如果我問了一個C++問題並得到了一個C的答案/建議,我會感到非常惱火。 ; - ] – ildjarn

+0

現在有意義。 – FFMG