Regex sostituisce lettere maiuscole con lettere minuscole


223

Sto cercando di sostituire le lettere maiuscole con le corrispondenti lettere minuscole utilizzando regex. Così che

EarTH:   1,
MerCury: 0.2408467,
venuS:   0.61519726,

diventa

earth:   1,
mercury: 0.2408467,
venus:   0.61519726,

nel testo sublime. Come posso ridurre le lettere solo in parole che contengono sia lettere minuscole che maiuscole? In modo che influisca venUse non VENUS.

Risposte:


395

Potresti:

Trova: (\w) Sostituisci con:\L$1

Oppure seleziona il testo, ctrl+ K+ L.


7
super. molto utile. Potresti indicare alcune risorse che elencano trasformazioni come '\ L'?
Codious-JR,

17
Sublime usa Boost per il suo supporto RegEx, questi sono i documenti per le stringhe di formato come \ L: boost.org/doc/libs/1_44_0/libs/regex/doc/html/boost_regex/…
Alex K.

4
E in IntelliJ
Patrick

12
Nota: per andare in maiuscolo, è necessario\U
takanuva15

3
Per minuscolare solo un singolo parametro, inserisci \ E dopo di esso per terminare la sezione minuscola: $1\L$2\E$3
Michael

130

Ho pensato che questo potrebbe tornare utile anche per gli altri:

trova:

  • ([A-Z])(.*)

sostituire:

  • \L$1$2-> converte tutte le lettere in $1e $2in minuscolo
    MA
  • \l$1$2-> convertirà solo la prima lettera $1in minuscolo e lascerà tutto il resto così com'è

Lo stesso vale per le maiuscole con \Ue\u


7
\l$1$2renderebbe il tutto solo $1in minuscolo in questo caso, perché $icontiene solo una lettera. \l=> prima lettera successiva in minuscolo e \u=> prima lettera successiva in maiuscolo. Dove \Ue \Ifarlo a tutte le lettere seguenti.
Raisch,

5
Si noti che \Etermina una \Lo \Usequenza.
Ludovic Kuty,

77

Prima di cercare con regex come [A-Z], dovresti premere il tasto case sensitive (o Alt+ C) (come leemour ha suggerito di modificare nella risposta accettata). Giusto per essere chiari, lascio alcuni altri esempi:

  1. Metti in maiuscolo le parole
    • Trova: (\s)([a-z])( \scorrisponde anche a nuove righe, ad esempio "venuS" => "VenuS")
    • Sostituire: $1\u$2
  2. Parole non capitalizzate
    • Trova: (\s)([A-Z])
    • Sostituire: $1\l$2
  3. Rimuovere la custodia del cammello (ad esempio cAmelCAse => camelcAse => camelcase)
    • Trova: ([a-z])([A-Z])
    • Sostituire: $1\l$2
  4. Lettere minuscole all'interno di parole (ad es. LowerCASe => Minuscole)
    • Trova: (\w)([A-Z]+)
    • Sostituire: $1\L$2
    • Sostituzione alternativa: \L$0
  5. Lettere maiuscole all'interno di parole (ad esempio upperCASe => uPPERCASE)
    • Trova: (\w)([A-Z]+)
    • Sostituire: $1\U$2
  6. Maiuscolo precedente (ad esempio upperCase => UPPERCase)
    • Trova: (\w+)([A-Z])
    • Sostituire: \U$1$2
  7. Precedenti minuscoli (es. LOWERCase => lowerCase)
    • Trova: (\w+)([A-Z])
    • Sostituire: \L$1$2
  8. Metti in maiuscolo il resto (es. UpperCase => upperCASE)
    • Trova: ([A-Z])(\w+)
    • Sostituire: $1\U$2
  9. Il resto è minuscolo (es. Minuscolo => maiuscolo)
    • Trova: ([A-Z])(\w+)
    • Sostituire: $1\L$2
  10. Maiusc-destra-maiuscola (es. Case => cAse => caSe => casE)
    • Trova: ([a-z\s])([A-Z])(\w)
    • Sostituire: $1\l$2\u$3
  11. Maiusc-sinistra-maiuscola (ad esempio CasE => CaSe => CAse => Case)
    • Trova: (\w)([A-Z])([a-z\s])
    • Sostituire: \u$1\l$2$3

Per quanto riguarda la domanda (abbina le parole con almeno una lettera maiuscola e una lettera minuscola e rendile minuscole), la risposta-commento di Leemour è la risposta giusta . Solo per chiarire, se c'è un solo gruppo da sostituire, puoi semplicemente usare ?:nei gruppi interni (cioè gruppi non di acquisizione ) o evitare di crearli affatto:

  • Trova: ((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))OR([a-z][A-Z]+|[A-Z]+[a-z])
  • Sostituire: \L$1

23/06/2016 Modifica

Tyler ha suggerito modificando questa risposta un'espressione di ricerca alternativa per # 4:

  • (\B)([A-Z]+)

Secondo la documentazione , \Bcercherà un personaggio che non sia al confine della parola (cioè non all'inizio e non alla fine). Puoi usare il pulsante Sostituisci tutto e fa esattamente la stessa cosa che avresti avuto (\w)([A-Z]+)come espressione di ricerca.

Tuttavia, il rovescio della medaglia \Bè che non consente sostituzioni singole, forse a causa della restrizione "non al contorno" del ritrovamento (modificarlo se si conosce il motivo esatto).


2

Espressione regolare

Trova :\w+

Sostituisci :\L$0

Sublime Text utilizza il motore Perl Compatible Regular Expressions (PCRE) della libreria Boost per alimentare le espressioni regolari nei pannelli di ricerca.

\L Converte tutto in minuscolo

$0 Cattura gruppi


Si prega di rendere questa una risposta completa, non solo una risposta in codice senza spiegazioni.
petezurich,

1

In BBEdit funziona in questo modo (es .: cambiando i valori ID in minuscolo):

Cerca qualsiasi valore: <a id="(?P<x>.*?)"></a> sostituisci con lo stesso in minuscolo:<a id="\L\P<x>\E"></a>

Era: è <a id="VALUE"></a> diventato:<a id="value"></a>


0

Prova questo

  • Trova: ([A-Z])([A-Z]+)\b
  • Sostituire: $1\L$2

Assicurati che la distinzione tra maiuscole e minuscole sia attiva (Alt + C)


Non funziona Corrisponde a 2+ lettere maiuscole. Ma capisco che \Lè per lettere minuscole. Ho aggiornato la domanda.
leemour
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.