Regex remplace les majuscules par des lettres minuscules

220

J'essaie de remplacer les lettres majuscules par des lettres minuscules correspondantes en utilisant l'expression régulière. Pour que

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

devient

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

dans Sublime Text. Comment puis-je télécharger des lettres uniquement dans des mots contenant à la fois des lettres minuscules et majuscules? Pour que cela affecte venUset non VENUS.

leemour
la source

Réponses:

393

Tu peux:

Rechercher: (\w) remplacer par:\L$1

Ou sélectionnez le texte, ctrl+ K+ L.

Alex K.
la source
7
super. très utile. Pourriez-vous s'il vous plaît pointer vers une ressource qui répertorie les transformations comme «\ L»?
Codious-JR
17
Sublime utilise Boost pour sa prise en charge RegEx, ce sont les documents pour les chaînes de format comme \ L: boost.org/doc/libs/1_44_0/libs/regex/doc/html/boost_regex/…
Alex K.
4
Et dans IntelliJ
Patrick
11
Remarque: pour passer en majuscules, vous aurez besoin de\U
takanuva15
2
Pour ne mettre en minuscule qu'un seul paramètre, mettez \ E après pour terminer la section en minuscules: $1\L$2\E$3
Michael
129

J'ai pensé que cela pourrait aussi être utile pour les autres:

trouver:

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

remplacer:

  • \L$1$2-> convertit toutes les lettres en $1et $2en minuscules
    MAIS
  • \l$1$2-> convertira uniquement la première lettre de $1en minuscules et laissera tout le reste tel quel

Il en va de même pour les majuscules avec \Uet\u

dGo
la source
7
\l$1$2ne ferait que le tout $1en minuscules dans ce cas ici, car $ine contient qu'une seule lettre. \l=> première lettre suivante en minuscules et \u=> première lettre suivante en majuscules. Où \Uet le \Ifaire à toutes les lettres suivantes.
Raisch
5
Notez que \Emet fin à une séquence \Lou \U.
Ludovic Kuty
77

Avant de rechercher avec des expressions rationnelles comme [A-Z], vous devez appuyer sur le bouton sensible à la casse (ou Alt+ C) (comme le lemour a gentiment suggéré d'être modifié dans la réponse acceptée). Juste pour être clair, je laisse quelques autres exemples:

  1. Mettre des mots en majuscule
    • Rechercher: (\s)([a-z])( \scorrespond également aux nouvelles lignes, par exemple "venuS" => "VenuS")
    • Remplacer: $1\u$2
  2. Décapitaliser les mots
    • Trouver: (\s)([A-Z])
    • Remplacer: $1\l$2
  3. Retirez le boîtier de chameau (par exemple, cAmelCAse => camelcAse => camelcase)
    • Trouver: ([a-z])([A-Z])
    • Remplacer: $1\l$2
  4. Lettres minuscules dans les mots (par exemple LowerCASe => Minuscules)
    • Trouver: (\w)([A-Z]+)
    • Remplacer: $1\L$2
    • Remplacement alternatif: \L$0
  5. Lettres majuscules dans les mots (par exemple upperCASe => uPPERCASE)
    • Trouver: (\w)([A-Z]+)
    • Remplacer: $1\U$2
  6. Précédent en majuscules (par exemple upperCase => UPPERCase)
    • Trouver: (\w+)([A-Z])
    • Remplacer: \U$1$2
  7. Précédent en minuscules (par exemple LOWERCase => lowerCase)
    • Trouver: (\w+)([A-Z])
    • Remplacer: \L$1$2
  8. Majuscule le reste (par exemple upperCase => upperCASE)
    • Trouver: ([A-Z])(\w+)
    • Remplacer: $1\U$2
  9. Le reste en minuscules (par exemple minuscule => l minuscule)
    • Trouver: ([A-Z])(\w+)
    • Remplacer: $1\L$2
  10. Maj-droite-majuscule (par exemple Case => cAse => caSe => casE)
    • Trouver: ([a-z\s])([A-Z])(\w)
    • Remplacer: $1\l$2\u$3
  11. Maj-gauche-majuscule (par exemple CasE => CaSe => CAse => Case)
    • Trouver: (\w)([A-Z])([a-z\s])
    • Remplacer: \u$1\l$2$3

En ce qui concerne la question (faire correspondre les mots avec au moins une majuscule et une lettre minuscule et les rendre minuscules), le commentaire-réponse de leemour est la bonne réponse . Juste pour clarifier, s'il n'y a qu'un seul groupe à remplacer, vous pouvez simplement l'utiliser ?:dans les groupes internes (c'est-à-dire les groupes non capturés ) ou éviter de les créer du tout:

  • Trouver: ((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))OU([a-z][A-Z]+|[A-Z]+[a-z])
  • Remplacer: \L$1

2016-06-23 Modifier

Tyler a suggéré en modifiant cette réponse une autre expression de recherche pour # 4:

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

Selon la documentation , \Brecherchera un caractère qui n'est pas à la limite du mot (c'est-à-dire pas au début et pas à la fin). Vous pouvez utiliser le bouton Remplacer tout et cela fait exactement la même chose que si vous l'aviez (\w)([A-Z]+)comme expression de recherche.

Cependant, l'inconvénient de \Best qu'il ne permet pas de remplacement unique, peut - être en raison de la découverte de restriction « ne limite » l »(s'il vous plaît ne pas modifier si vous connaissez la raison exacte).

Armfoot
la source
2

Expression régulière

Trouver :\w+

Remplacez :\L$0

Sublime Text utilise le moteur Perl Compatible Regular Expressions (PCRE) de la bibliothèque Boost pour alimenter les expressions régulières dans les panneaux de recherche.

\L Convertit tout en minuscules

$0 Capturer des groupes

BadTudou
la source
Veuillez en faire une réponse complète, pas seulement une réponse codée sans explication.
petezurich
1

Dans BBEdit, cela fonctionne (ex.: Changer les valeurs d'ID en minuscules):

Rechercher n'importe quelle valeur: <a id="(?P<x>.*?)"></a> remplacer par la même en minuscules:<a id="\L\P<x>\E"></a>

Était: <a id="VALUE"></a> est devenu:<a id="value"></a>

Paul Bondarovski
la source
0

Essaye ça

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

Assurez-vous que la casse est activée (Alt + C)

Vignesh Kumar A
la source
Ça ne marche pas. Il correspond à plus de 2 lettres majuscules. Mais je comprends que \Lc'est pour les minuscules. J'ai mis à jour la question.
leemour