0

次のようにブーストで regex_search を使用しています。

std::string symbol = "abcd1234";

boost::regex regExpr("(\\d{4})", boost::regex::icase);

boost::smatch regMatch;

boost::regex_search(symbol, regMatch, regExpr);

私が取得する必要があるのは、「abcd」、つまり、最初に一致した正規表現までの元の文字列です。これはどのように可能ですか?前もって感謝します...

4

1 に答える 1

2

The following should work:

^(.*?)\\d{4}

Explanation:

^ - the start of the string
. - wild-card
.*? - zero or more (*) wild-cards (.), matched non-greedily (?), so you get the first match, not the last one

So you match everything from the start of the string to the digits.

Alternative using boost functionality:

regMatch.prefix() should return the required string.

于 2013-08-20T17:06:24.720 に答える