Come sostituire tutte le stringhe ai numeri contenuti in ciascuna stringa in Notepad ++?

Sto cercando di trovare tutti i valori con il seguente schema:

value="4" value="403" value="200" value="201" value="116" value="15" 

e sostituirlo con valore all’interno degli ambiti.

Sto usando la seguente espressione regolare per trovare il modello:

 .*"\d+" 

Come posso fare una sostituzione?

In Notepad ++ per sostituire, premi Ctrl + H per aprire il menu Sostituisci.

Quindi, se si seleziona il pulsante “Espressione regolare” e si desidera che nella propria sostituzione venga utilizzata una parte del modello di corrispondenza, è necessario utilizzare “gruppi di cattura” (maggiori informazioni su google ). Ad esempio, supponiamo che desideri abbinare ciascuna delle seguenti righe

 value="4" value="403" value="200" value="201" value="116" value="15" 

utilizzando il modello .*"\d+" e si desidera mantenere solo il numero. È quindi ansible utilizzare un gruppo di cattura nel modello di corrispondenza, utilizzando parentesi ( e ) , in questo modo:. .*"(\d+)" . Così ora nella tua sostituzione puoi semplicemente scrivere $1 , dove $ 1 fa riferimento al valore del 1 ° gruppo di cattura e restituirà il numero per ogni corrispondenza riuscita. Se hai due gruppi di cattura, ad esempio (.*)="(\d+)" , $1 restituirà il value stringa e $2 restituirà il numero.

Quindi usando:

Trova:. .*"(\d+)"

Sostituisci: $1

Ti restituirà

 4 403 200 201 116 15 

Si prega di notare che ci sono molti modi alternativi e migliori per abbinare il modello di cui sopra. Ad esempio il value="([0-9]+)" del pattern value="([0-9]+)" sarebbe meglio, poiché è più specifico e sarai sicuro che corrisponderà solo a queste righe. È anche ansible effettuare la sostituzione senza l’uso di gruppi di cattura, ma questo è un argomento leggermente più avanzato, quindi lo lascerò per ora 🙂

psxls ha dato un’ottima risposta, ma penso che la mia versione Notepad ++ sia leggermente diversa, quindi la cattura $ (simbolo del dollaro) non ha funzionato.

Ho Notepad ++ v.5.9.3 ed ecco come puoi realizzare il tuo compito:

Cerca il pattern: value = \ “([0-9] *) \” E sostituisci con: \ 1 (qualunque cosa tu voglia fare attorno a quel gruppo che cattura)

Ex. Surround con parentesi quadre

[\ 1] -> produrrà value = “[4]”

Sostituisci (.*")\d+(")

Con $1x$2

Dove x è il tuo “valore dentro gli ambiti”.

Ho Notepad ++ v6.8.8

Trova : [([a-zA-Z])]

Sostituisci : [\ ‘\ 1 \’]

Produrrà: $ array [XYZ] => $ array [‘XYZ’]

Trova: value="([\d]+|[\d])"

Sostituisci: \1

Ti restituirà davvero

4
403
200
201
116
15

js:

 a='value="4"\nvalue="403"\nvalue="200"\nvalue="201"\nvalue="116"\nvalue="15"'; a = a.replace(/value="([\d]+|[\d])"/g, '$1'); console.log(a);