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?