Вы можете использовать регулярные выражения POSIX с substring()
:
select substring('hello world moon' from E'^\\w+\\s+\\w+');
в PostgreSQL или с очень либеральной интерпретацией слова:
select substring('it''s a nice day' from E'^\\S+\\s+\\S+');
Обратите внимание на \S
(без пробелов) вместо \w
(символ "слово", буквально-цифровой плюс подчеркивание).
Не забывайте все лишние бессмысленные цитаты, хотя:
-
E''
, чтобы сообщить PostgreSQL, что вы используете , расширяющий экранирование . - И затем двойные обратные косые черты для получения одиночных обратных косых черт после парсера строк и в парсере регулярных выражений.
Если вы действительно хотите использовать regexp_split_to_array
, тогда вы можете, но вышеприведенные проблемы цитирования применимы, и я думаю, что вы захотите вырезать только первые два элементаиз массива:
select (regexp_split_to_array('hello world moon', E'\\s+'))[1:2];
Я предполагаю, что побег вызвал некоторую путаницу;Я обычно заканчиваю тем, что добавляю обратную косую черту, пока она не заработает, а затем разбираю ее на части, пока не понимаю, почему мне нужно количество обратных косых черт, которые я в конечном итоге использовала.Или, может быть, проблема заключалась в дополнительных скобках и синтаксисе разбиения массивов (это было для меня, но немного экспериментов разобрались с этим).