Я хочу создать из первых двух слов из предложения, используя Perl-функцию в PostgreSQL. В PostgreSQL, я могу сделать это с помощью:Извлечение первых двух слов в perl с использованием regex
text = "I am trying to make this work";
Select substring(text from '(^\w+-\w+|^\w+(\s+)?(!|,|\&|'')?(\s+)?\w+)');
Он вернется "I Am"
Я пытался построить функцию Perl в Postgresql, что делает то же самое.
CREATE OR REPLACE FUNCTION extract_first_two (text)
RETURNS text AS
$$
my $my_text = $_[0];
my $temp;
$pattern = '^\w+-\w+|^\w+(\s+)?(!|,|\&|'')?(\s+)?\w+)';
my $regex = qr/$pattern/;
if ($my_text=~ $regex) {
$temp = $1;
}
return $temp;
$$ LANGUAGE plperl;
Но я получаю синтаксическую ошибку рядом с регулярным выражением. Я не уверен, что я делаю неправильно.
I Пробовал if ($ my_text = ~ qr/^ \ w + - \ w + |^\ w + (\ s +)? (! |, | \ & | '')? (\ S +)? \ W + /) {---- - Но я получаю пустой результат. – samuraiexe
Только гадание, но вы не объявили '$ pattern'. – collapsar