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\1
frå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.