Creazione di una nuova colonna basata su parti di stringhe in un'altra colonna in QGIS
Ho una colonna con nomi di zonizzazione (con "subzones"
come UV036, UMTs2 ecc.) E vorrei creare una nuova colonna con la zona generale (UV invece di UV036, UMT invece di UMTs2 ... come vedi non è sempre il stesso numero di lettere o stessa struttura).
Ho provato a farlo nel calcolatore di campo:
CASE
WHEN "c_zonage_b" LIKE 'UH%%%%' THEN 'UH'
WHEN "c_zonage_b" LIKE 'UE%%%%' THEN 'UE'
WHEN "c_zonage_b" LIKE 'N%%%%' THEN 'N'
ELSE ''
END
(Specifico anche in quale colonna voglio che sia presente nel calcolatore del campo).
%
sono caratteri jolly per tenere conto di ogni possibile sottozona (a volte la sottozona include numeri o lettere e il loro numero varia, ma non è mai più di quattro da cui il %%%%
).
Purtroppo non funziona.
Risposte
Non è necessario utilizzare il caso se si desidera estrarre il testo dalla stessa colonna. È possibile utilizzare la seguente espressione nel Calcolatore di campo per estrarre le lettere maiuscole nella nuova colonna come segue:

regexp_replace( "Name" ,'([A-Z]+)(.+)','\\1')
L'output sarà così:

Questa espressione '([A-Z]+)'
cattura le lettere maiuscole, che è la prima parte della stringa, e '\\1'
serve per selezionare il primo gruppo.
Questa espressione '(.+)'
cattura il resto della stringa. Se vuoi popolare un'altra colonna per la seconda parte della stringa, puoi usare la seguente espressione:
regexp_replace( "Name" ,'([A-Z]+)(.+)','\\2')
Basta sostituire \\1
con \\2
per acquisire il secondo gruppo.
