Снежинка: REGEX_SUBSTR дает ноль?

Я использую регулярное выражение в Snowflake и получаю удивительный результат. В частности, я запускаю это:

SELECT REGEXP_SUBSTR('https://example.com/a/b/c?name=me', 'https://example.com/a/b/c\?name=\\w+')

и я вернусь NULL,

Я ожидал получить полный матч (согласно документации Snowflake). В этом случае это будет:

'https://example.com/a/b/c?name=me'

Что я недопонимаю?

Спасибо!

1 ответ

Вам нужно избегать косых черт

SELECT REGEXP_SUBSTR('https:\/\/example.com\/a\/b\/c\?name=me', 'https:\/\/example.com\/a\/b\/c\?name=\\w+')

Согласно комментарию Матиаса, ? является токеном подстановочного знака, поэтому необходимо экранировать, что является двойным \ для получения \? мимо кодировки побега. таким образом

SELECT REGEXP_SUBSTR('https://example.com/a/b/c?name=me',
            'https:\/\/example.com\/a\/b\/c\\?name=\\w+');

даст ответ, который вы ищете.

Другие вопросы по тегам