|
|
|
|
Strumenti |
17-11-2021, 09:50 | #1 |
Senior Member
Iscritto dal: Dec 1999
Città: Roma Est
Messaggi: 3073
|
REGEX - Eliminare tutto quello compreso tra due parole
Ciao,
sto cercando un modo per cancellare del testo compreso da una determinata parola fino all'inizio di un'altra, es: UPDATE pass SET stato = -3, descr_stato = 'Scartata' WHERE pratica = '1458' AND stato = 0 AND anno IN (2016, 2017, 2018); UPDATE pass SET stato = -3, descr_stato = 'Scartata' WHERE pratica = '2383' AND stato = 0 AND anno IN (2020); In questo caso vorrei cancellare tutto quello che va da "SET" a "WHERE" (escluso) è possibile? Grazie, CJ
__________________
Ryzen 7 5700G / Gigabyte B550M-AORUS-ELITE / 2 x DDr 16GB G.Skill F4-3200 / WD SN850X 1TB / Lexar NM620 1TB / MSI 4060ti 16GB / 2 x Dell U2415 |
17-11-2021, 15:20 | #2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2745
|
Puoi usare la regex
SET(.*?)WHERE Con flag "g" e "s" e sostituire con WHERE https://regex101.com/r/qEmUG1/1 Non ho capito se vuoi cancellare anche SET, comunque basta modificare la stringa con cui sostituire i match. |
18-11-2021, 08:39 | #3 |
Senior Member
Iscritto dal: Dec 1999
Città: Roma Est
Messaggi: 3073
|
Ciao ti ringrazio,
no devo cancellare il SET e lasciare il where. Ho provato su Notepad++ e funziona abbastanza bene, l'unico inconveniente è che mi cancella anche il WHERE. Ho provato a passargli i parametri /gs ma non ci sono riuscito.
__________________
Ryzen 7 5700G / Gigabyte B550M-AORUS-ELITE / 2 x DDr 16GB G.Skill F4-3200 / WD SN850X 1TB / Lexar NM620 1TB / MSI 4060ti 16GB / 2 x Dell U2415 |
18-11-2021, 10:12 | #4 |
Senior Member
Iscritto dal: Dec 1999
Città: Roma Est
Messaggi: 3073
|
No ok sto capendo solo adesso , hai sostituito il tutto direttamente con "WHERE"
Ma c'è un modo di dire di cercare anche su linee diverse, nel caso non sia disponibile la voce . matches new line? Purtroppo mi capita spesso di usare altri software dove questa opzione non è disponibile.
__________________
Ryzen 7 5700G / Gigabyte B550M-AORUS-ELITE / 2 x DDr 16GB G.Skill F4-3200 / WD SN850X 1TB / Lexar NM620 1TB / MSI 4060ti 16GB / 2 x Dell U2415 |
18-11-2021, 14:49 | #5 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2745
|
Sì si può, esplicitando i caratteri "line terminator" (li ho presi da regex101, nello schemino di destra dove spiega il significato della regex, è nella descrizione del punto):
SET((.|[\r\n\u2028\u2029])*?)WHERE Vedi esempio aggiornato dove ho rimosso il flag s: https://regex101.com/r/qEmUG1/3 |
18-11-2021, 15:58 | #6 |
Senior Member
Iscritto dal: Dec 1999
Città: Roma Est
Messaggi: 3073
|
Perfetto, ti ringrazio molto, gentilissimo!
Grazie!
__________________
Ryzen 7 5700G / Gigabyte B550M-AORUS-ELITE / 2 x DDr 16GB G.Skill F4-3200 / WD SN850X 1TB / Lexar NM620 1TB / MSI 4060ti 16GB / 2 x Dell U2415 |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:34.