1

Тема: Oniguruma Regex

Після виклику onig_new видає помилку: invalid code point value.
Ось такий виклик:

r = onig_new(&reg, pattern, pattern_end, options, enc, ONIG_SYNTAX_DEFAULT, &einfo);
if (r != ONIG_NORMAL) {
    char s[ONIG_MAX_ERROR_MESSAGE_LEN];
    onig_error_code_to_str((OnigUChar *)s, r, &einfo);
    cout << "Error: " << string(s) << endl;
    onig_end();
    return -1;
}

Хтось знає на що треба звернути увагу? Де саме виправляти треба?

2

Re: Oniguruma Regex

Дивись які аргументи в тебе

Подякували: koala, Teg Miles2

3

Re: Oniguruma Regex

Скажіть, а ви реально думаєте, що проблема саме в цьому коді? Ну тоді видаліть перевірку, помилку виводити перестане.

Подякували: Teg Miles1

4

Re: Oniguruma Regex

Ось тут була проблема, із першим варіантом у коментарях, де не було strcpy:

char* char_reg_key = new char[regex_key.length()+1]; //regex_key.c_str();
char* char_dict_body = new char[dict_body.length()+1]; //dict_body.с_str();
strcpy(char_reg_key, regex_key.c_str());
strcpy(char_dict_body, dict_body.c_str());

regex_key, dict_body — це змінні типу wxString.
Але тепер інша проблема з'явилася. Розпізнавання слів дає збій на певному рівні:
SAPONUL
SAPOR
SAPORIFIC
SAPOROSITY
SAPOROUS
SAPOTA
SAPOTACEOUS
APPAN WOOD

APPARE

APPER

APPHIC

APPHIC

До SAPPAN WOOD усе добре, а далі щось не те.
Regex ключ: \b^[A-Z;\'\-\s]+$(?=\s)\b

5

Re: Oniguruma Regex

Проблема була в wxString, цей формат не дуже ладнає з С масивами.
Замінив усе на звичайний string C++.
Окрім того з ним можна просто зробити вказівники без зайвих копій і все працюватиме:

char* char_reg_key = regex_key.data();
char* char_dict_body = dict_body.data();

6

Re: Oniguruma Regex

Цікаво, ви самі помітили, що проблеми були не в тому коді, що ви показували, а в іншому? Ви зробите з цього якісь висновки чи ні?