Ho qualcosa di simile a <Foobar Name='Hello There'/>
e ho bisogno di cambiare le virgolette singole tra virgolette. Ho provato :s/\'.*\'/\"\0\"
ma ha finito per produrre <Foobar Name="'Hello There'"/>
. La sostituzione di \0
con \1
ha prodotto solo una stringa vuota all'interno delle virgolette doppie: c'è qualche sintassi speciale che mi manca e devo rendere solo la stringa trovata ("Hello There") tra le virgolette assegnate a \1
?Sostituire le virgolette attorno alle stringhe in Vim?
risposta
è necessario utilizzare raggruppamenti:
:s/\'\(.*\)\'/\"\1\"
In questo modo argomento 1 (vale a dire, \ 1) sarà conforme a ciò che è delimitata da \ (e \).
È necessario inserire parentesi tonde attorno alla parte dell'espressione che si desidera acquisire.
s/\'\(.*\)\'/"\1"/
Tuttavia, si potrebbero avere problemi con la corrispondenza involontaria. Potresti semplicemente sostituire le singole virgolette con virgolette nel tuo file?
a meno che manchi qualcosa, s/\'/"/g
non funzionerebbe?
Hai l'idea giusta: vuoi avere "\1"
come clausola di sostituzione, ma devi prima mettere la parte "Hello There" nel gruppo di cattura 1 (0 è l'intera corrispondenza). Prova:
:%/'\(.*\)'/"\1"
%s/'\([^']*\)'/"\1"/g
Si vuole utilizzare [^']*
invece di .*
altrimenti
'apples' are 'red'
otterrebbe convertito in "apples' are 'red"
Oppure usare '. \ {-}' invece di '. *'. Vedi ': help/\ {-'. –
C'è anche surround.vim, se stai cercando di fallo abbastanza spesso. Dovresti usare cs'"
per modificare le virgolette circostanti.
Grazie per il collegamento surround.vim - stavo desiderando per questo da molto tempo. – ThomasH
c'è un modo per mappare questo ad un comando leader? Non riesco a farlo: \ –
Non dovresti aver bisogno di associarlo a un comando leader, poiché usa un movimento 'cs' personalizzato con due argomenti -' '' come obiettivo, e '" 'come – kejadlen
Solo una cronaca - per sostituire tutte le virgolette con il singolo, questa è l'espressione regolare corretta - in base a esempio di rayd09 sopra
:%s/"\([^"]*\)"/'\1'/g
Presumendo che si vuole fare questo su un intero file ...
Modo N:
ggvG$ [SHIFT+:]
Modalità X:
'<,'>/'/" [RET]
- 1. Vim sostituire le virgolette interne
- 2. Scala: Ignora toString in modo che le virgolette siano stampate attorno alle stringhe
- 3. Sostituire le virgolette in Javascript?
- 4. Come sostituire le virgolette doppie con virgolette singole
- 5. Come evitare le virgolette attorno alias di tabella in jOOQ
- 6. javascript sostituire virgolette singole con virgolette doppie
- 7. Cosa fanno esattamente le virgolette attorno al nome della tabella?
- 8. Come sostituire le virgolette ricce in una stringa utilizzando Javascript?
- 9. vim: GQ ignora le virgolette aperte Quando A capo automatico
- 10. Perché TPageProducer non rimuove le virgolette dalle stringhe?
- 11. Perché mettere `attorno alle colonne?
- 12. Surround due parole con virgolette in Vim
- 13. Come sostituire le stringhe con javascript?
- 14. pprint(): come utilizzare le virgolette per visualizzare le stringhe?
- 15. Come sostituire '& =' con '= &' in Vim?
- 16. In Vim, come posso cancellare tutto tra virgolette comprese le virgolette?
- 17. Come sfuggire alle virgolette singole in MySQL
- 18. Cambia virgolette che racchiudono in Vim
- 19. (g) vim sostituire regex
- 20. Vim Regex Sostituire
- 21. Come sostituire solo le corrispondenze di parole intere in Vim?
- 22. Come sostituire le terminazioni di linea in VIM
- 23. Come sostituire tutte le virgolette doppie con virgolette singole usando jquery?
- 24. Come sostituire tutte le virgolette doppie a virgolette singole usando mysql replace?
- 25. Java; Sostituire le stringhe (usando le espressioni regolari)?
- 26. C# per sostituire le stringhe di testo in un documento
- 27. Come sostituire le stringhe regex in puro C?
- 28. Come posso sostituire le stringhe in un memo (FastReport)?
- 29. trovare e sostituire parole intere in vim
- 30. AngularJS: Direttiva - Passaggio di stringhe, senza dover utilizzare le virgolette
Questo era il mio compromesso, ma sentivo che non era giusto, specialmente se ci fosse una singola citazione all'interno dell'attributo. Non penso che ciò possa accadere in XML, ma potrebbe accadere in qualche altra situazione in fondo alla strada che richiede questa stessa soluzione. – ravuya
Una virgoletta singola all'interno di un attributo a virgolette singole deve essere ''' e una virgoletta doppia all'interno di un attributo a virgola doppia deve essere '"'. Ovviamente una singola citazione potrebbe vivere all'interno di un attributo con due virgolette e viceversa ... – ephemient