regex som används i PostgreSQL är faktiskt implementerat med ett mjukvarupaket skrivet av Henry Spencer. Det är inte konstigt, det har sina egna fördelar, egenheter.
En av skillnaderna från de vanliga NFA regex-motorerna är ordet gräns. Här, \Y matchar en icke-ordsgräns. Resten av mönstren du behöver är ganska kända.
Så du måste använda '^(\w+)|\Y\w' mönster och en '\1' ersättare.
Detaljer :
^- start av strängankare(\w+)- Fångningsgrupp 1 matchande 1+ ord tecken (detta kommer att hänvisas till med\1från ersättningsmönstret)|- eller\Y\w- ett ord char som föregås av ett annat ordtecken.
\1 kallas en ersättnings numrerad tillbakareferens
, som bara sätter värdet som fångats med grupp 1 i ersättningsresultatet.