Использование str_match с внешним видом (U_REGEX_LOOK_BEHIND_LIMIT) - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь использовать регулярные выражения для извлечения строки, она работает здесь: https://regexr.com/3vsd4

Но при запуске чего-то похожего в R это не получается:

m =  "(?<=~* )([ AP_])\\w+"
x = "XY_O ~ R_Z + YPP_L_WINTER + AP_C"
str_match(x, m)[1, 1]

Выдает ошибку:

Ошибка в stri_match_first_regex (string, pattern, opts_regex = opts (pattern)): совпадения с шаблонами Look-Behind должны иметь ограниченную максимальную длину.(U_REGEX_LOOK_BEHIND_LIMIT)

Как я могу отредактировать код R для возврата "AP_C"?

1 Ответ

0 голосов
/ 21 сентября 2018

Ваш вопрос подразумевает, что целью вашего кода является соответствие AP_C.Если это так, смотреть назад не требуется.Вы можете просто извлечь соответствующий подшаблон из вашего вызова str_match.

Не зная всех возможных форматов ваших строк, что-то вроде этого должно работать для предоставленного вами примера:

m = "~.*? (AP_\\w+)"
x = "XY_O ~ R_Z + YPP_L_WINTER + AP_C"
str_match(x, m)[1, 1]

Возможно, есть другие возможности регулярного выражения в зависимости от ваших требований к формату.

...