To pytanie opiera się na poprzednim pytaniu, na które natknąłem się na gis.stackexchange: jak łatwo edytować dane atrybutów za pomocą wyrażeń regularnych?
Być może ktoś może skierować mnie w dobrym kierunku?
Mam wektorowy plik kształtu linii konturowych. W tabeli atrybutów przekonwertowałem już pole o nazwie FEET składające się z danych liczb całkowitych zawierających wartości wysokości na pole łańcuchowe o nazwie Label. Dodatkowo z powodzeniem dodałem „na końcu łańcucha”, aby po oznaczeniu danych odczytać je jako stopy.
Następną rzeczą, którą próbuję zrobić, jest wstawienie przecinka między dwiema pierwszymi wartościami ciągu tylko wtedy, gdy długość łańcucha jest większa niż 4, lub tak, aby przecinek pojawił się tylko między tysiącami a setkami cyfr w polu Etykieta. Długość musi być większa niż 4, ponieważ liczę też „
Mój kod do tej pory to:
case when length( "Label") >4 then regexp_replace( "Label", '^([0-9])+([0-9]{3}\')$','$1 , $2') else "Label" end
jednak funkcja regexp_replace nie wydaje się akceptować zmiennych grupowych $ 1 $ 2 w 3. parametrze funkcji.
Patrzyłem na http://docs.python.org/2/library/re.html, ponieważ regex kalkulatora polowego pochodzi z tego, co rozumiem na podstawie użycia regexu przez Pythona, ale nie byłem w stanie tego zrozumieć. Być może to, co próbuję zrobić, nie jest jeszcze możliwe dzięki tej funkcji w kalkulatorze polowym w QGIS 1.8 na Mac OSX. Lub bardziej prawdopodobne, że moja składnia jest nieprawidłowa, ponieważ jestem początkującym programistą i nieco nowy w wyrażeniach regularnych.