Hardware Upgrade Forum

Hardware Upgrade Forum (https://www.hwupgrade.it/forum/index.php)
-   Programmazione (https://www.hwupgrade.it/forum/forumdisplay.php?f=38)
-   -   REGEX - Eliminare tutto quello compreso tra due parole (https://www.hwupgrade.it/forum/showthread.php?t=2951655)


cyber 17-11-2021 09:50

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

wingman87 17-11-2021 15:20

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.

cyber 18-11-2021 08:39

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. :mc:



Ho provato a passargli i parametri /gs ma non ci sono riuscito. :p

cyber 18-11-2021 10:12

No ok sto capendo solo adesso :D , 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.

wingman87 18-11-2021 14:49

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

cyber 18-11-2021 15:58

Perfetto, ti ringrazio molto, gentilissimo! :)

Grazie! :)


Tutti gli orari sono GMT +1. Ora sono le: 03:02.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.