Voglio estrarre tutti i riferimenti ai nomi di colonna trovati in una formula JMP in un elenco, identificarne in particolare le dipendenze di colonna. Le formule JMP possono essere piuttosto complesse; ad esempio, potrebbero creare codice JSL come output che include nomi di colonne. Non mi interessano i nomi di quelle colonne poiché la formula non dipende da essi. Mi interessano solo i nomi delle colonne utilizzati per calcolare il risultato. Esiste un modo semplice per farlo senza analizzare a livello di codice la formula?
Ecco uno schizzo del mio piano iniziale.
Converti la formula in una stringa e cerca tre elementi: :,
!", \!".
- Per prima cosa rimuovi tutte le virgolette. Trova prima \!" senza : che precede e poi trova la corrispondenza \!" senza precedenti: e senza virgolette multiple con escape. Riconoscilo come citazione nella formula e rimuovilo (o saltalo). Quindi ripetere per l'intera formula
- Quindi cercare i nomi nella stringa
- Se viene trovato :, continuare finché non viene trovato un carattere di "interruzione del nome" come una virgola. Memorizza come uno dei nomi in formato stringa
- Se viene trovato
!", continuare finché non viene trovato \!"n. Memorizzare la stringa del nome come uno dei nomi
- Infine, deduplica l'elenco dei nomi in modo che siano univoci.
Esiste un modo più elegante per farlo?
In caso contrario, cosa può andare storto con quanto sopra? Esistono altri modi in cui è possibile specificare il nome di una colonna in una formula?
Sono disposto a presumere che la formula sia stata creata tramite il tradizionale punta e clicca nell'editor delle formule e non utilizzi il codice JSL. Pertanto, ad esempio, il codice JSL che utilizza Parse() nella formula per risolvere un riferimento di colonna non rientra nell'ambito. Anche se sarebbe bello se potesse fare anche quello
.