PostgreSql использование regexp_matches

В таблице есть колонка с данными следующего вида:

10a.23.45b some text
10.23.45 some text
23.45.67b some text

Мне необходимо выделить часть с номером до первого пробела, делаю следующим образом:

select regexp_matches(name, '^[0-9].*?[.][0-9].*?[.][0-9].*?[ ]', 'g') from sometable

Результат:

10a.23.45b 
10.23.45 
23.45.67b

Теперь я пытаюсь упростить регулярное выражение заменив на [0-9].*?[.]){2}:

select regexp_matches(name, '^([0-9].*?[.]){2}[0-9].*?[ ]', 'g') from sometable

Но в этом варианте возвращается только до первой точки, не могу понять в чем дело:

10a. 
10. 
23.

Также не могу понять почему не выводится вся строка если убрать из первого варианта конечный пробел [] вот так ^[0-9].*?[.][0-9].*?[.][0-9].*. Почему вместо 10a.23.45b some text возвращается только 10a.23.4?


Ответы (0 шт):