Как извлечь n символов из строки неопределенной длины, используя регулярное выражение в лаке? - PullRequest
0 голосов
/ 11 апреля 2019

Я пишу модуль лака (VCL) для моего внутреннего сервера. Требуется логика извлечения n символов из строки неопределенной длины.

Я попытался использовать функцию regsub () в vcl с регулярным выражением, чтобы заменить часть строки пустым пространством.

Мне нужно извлечь первые 20 символов строки. Когда длина строки равна 36, я использовал регулярное выражение для замены последних 16 символов на пустое место. Но когда длина строки не определена, скажем, 40. Я получаю 24 символа вместо 20. Как мне добиться этого?

set req.http.mysubstr = regsub(req.http.mystring, ".{16}$", "");

set req.http.mysubstr = regsub(req.http.mystring, ".{($variable)}$", ""); # $variable should be the length of the string - first 20 characters

1 Ответ

0 голосов
/ 01 мая 2019

Используйте группы захвата:

regsub(req.http.mystring, "^(.{20}).*", "\1")

протестируйте его на regex101.com

...