2

テキスト「\0」を、「a」または「b」と一致するのと同じ正規表現と一致させる必要があります。(C++ の文字定数の正規表現)。さまざまな正規表現を試しましたが、まだ成功していません。私の最近の試み:

^['].|\\0[']

私が試した他のことのほとんどはセグフォルトを与えたので、これは私が得た最も近いものです.

4

3 に答える 3

0

これは、私がテストしたもの('a'、'b'、'\ 0')と非常にうまく機能します。

あなたが持っていないか、私があなたがそれから何を得ることができるかを推測するstd::regexならば、私が使用した正規表現がであるという事実です。boost::regex('.'|'\\0')

#include <boost/regex.hpp>
#include <string>
#include <iostream>
#include <vector>

int main() {
    std::vector<std::string> strings;
    strings.push_back(R"('a')");
    strings.push_back(R"('b')");
    strings.push_back(R"('\0')");
    boost::regex rgx(R"(('.'|'\\0'))");
    boost::smatch match;
    for(auto& i : strings) {
        if(boost::regex_match(i,match, rgx)) {
            boost::ssub_match submatch = match[1];
            std::cout << submatch.str() << '\n';
        }
    }
}

于 2013-03-04T05:16:48.150 に答える
0

機能する正規表現 (この例では C ヘッダーを使用) は次のとおりです。

^('(.|([\\]0))')

助けてくれた@WhozCraigに感謝します!

于 2013-03-04T17:14:44.633 に答える