1
我想捕獲具有pcre ++庫的命名子串。在pcre ++中命名捕獲的子串++
我知道pcre庫有這個功能,但是pcre ++沒有實現這個。
這是我現在有(只是一個簡單的例子):
pcrepp::Pcre regex("test (?P<groupName>bla)");
if (regex.search("test bla"))
{
// Get matched group by name
int pos = pcre_get_stringnumber(
regex.get_pcre(),
"groupName"
);
if (pos == PCRE_ERROR_NOSUBSTRING) return;
// Get match
std::string temp = regex[pos - 1];
std::cout << "temp: " << temp << "\n";
}
如果我調試,POS機返回1,這是正確的,(?PBLA)是1號子匹配(0是整個比賽)。應該沒問題。但是... regex.matches()返回0.爲什麼是這樣的:S?
Btw。我做正則表達式[pos - 1],因爲pcre ++將結果重新索引0,指向第一個子匹配,所以1.因此1變爲0,2變爲1,3變爲2等。
有沒有人知道如何解決這個問題?
這聽起來像pcre ++比它的價值更麻煩:不完整的庫,在〜6yrs沒有發佈,操作符重載過度,重新定義了子匹配索引... ...直接下載或下載谷歌的RE2(http:// code。 google.com/p/re2/) – Stephen 2010-06-17 00:47:24