1
PCREを正規表現解析に使用しています。特定のパターンの単語を検索する必要があります(単語の文字列内のすべての単語をコンマで区切ります)それらを文字列ベクトルに変換します。PCRE正規表現内の任意の数の単語を文字列に一致させる
どうすればいいですか?
PCREを正規表現解析に使用しています。特定のパターンの単語を検索する必要があります(単語の文字列内のすべての単語をコンマで区切ります)それらを文字列ベクトルに変換します。PCRE正規表現内の任意の数の単語を文字列に一致させる
どうすればいいですか?
ラフコードについて申し訳ありませんが、私は急いでいます...
pcre* re;
const char *error;
int erroffset;
char* subject = txt;
int ovector[3];
int subject_length = strlen(subject);
int rc = 0;
re = pcre_compile(
"\\w+", /* the pattern */
PCRE_CASELESS|PCRE_MULTILINE, /* default options */
&error, /* for error message */
&erroffset, /* for error offset */
NULL); /* use default character tables */
char* pofs = subject;
while ( rc >= 0 ) {
rc = pcre_exec(
re, /* the compiled pattern */
NULL, /* no extra data - we didn't study the pattern */
subject, /* the subject string */
subject_length, /* the length of the subject */
0, /* start at offset 0 in the subject */
0, /* default options */
ovector, /* output vector for substring information */
3); /* number of elements in the output vector */
/*
if (rc < 0) {
switch(rc) {
case PCRE_ERROR_NOMATCH: printf("No match\n"); break;
// Handle other special cases if you like
default: printf("Matching error %d\n", rc); break;
}
pcre_free(re); // Release memory used for the compiled pattern
return;
}
*/
/* Match succeded */
if ( rc >= 0 ) {
pofs += ovector[1];
char *substring_start = subject + ovector[0];
// do something with the substring
int substring_length = ovector[1] - ovector[0];
subject = pofs;
subject_length -= ovector[1];
}
}
std::string wordstring = "w1, w2, w3";
std::string word;
pcrecpp::StringPiece inp_w(wordstring);
pcrecpp::RE w_re("(\\S+),?\\s*");
std::vector outwords;
while (w_re.FindAndConsume(&inp_w, &word)) {
outwords.push_back(word);
}
は、あなたがこれをテストしたことがありますか?私はそれらが単語の一部であるかのようにコンマをマッチさせることを期待します:["w1"、 "w2"、 "w3"] –