Regex pour remplacer les majuscules des minuscules
Je suis en train de remplacer les lettres majuscules avec la correspondance des lettres minuscules en utilisant les regex.
De sorte que
EarTH: 1,
MerCury: 0.2408467,
venuS: 0.61519726,
devient
earth: 1,
mercury: 0.2408467,
venus: 0.61519726,
dans Sublime Text. Comment puis-je downcase seulement des lettres dans les mots qui contiennent à la fois minuscules et en majuscules les lettres? De sorte qu'il affecte venUs
et pas VENUS
.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez:
Trouver:
(\w)
Remplacer Par:
\L$1
Ou sélectionnez le texte, ctrl+K+L.
\U
$1.\L$2($3)
minuscules$2
tout en ne rendant pas$3
minuscules?$1\L$2\E$3
J'ai pensé que cela pourrait être utile pour d'autres personnes :
trouver:
([A-Z])(.*)
remplacer:
\L$1$2
--> permettra de convertir toutes les lettres de$1
et$2
minusculesMAIS
\l$1$2
--> va convertir uniquement la première lettre de$1
minuscules et laisser tout le reste estIl en va de même pour les majuscules avec
\U
et\u
\l$1$2
ne ferait que rendre l'ensemble de la$1
en minuscules dans ce cas ici, parce que$i
ne contient qu'une seule lettre.\l
=> la première lettre en minuscule et\u
=> la première lettre en majuscule. Où\U
et\I
de le faire pour toutes les lettres suivantes.\E
met fin à une\L
ou\U
séquence.Avant de chercher avec la regex comme
[A-Z]
, vous devriez appuyez sur le casse bouton (ou Alt+C) (comme leemour gentiment proposé être édité dans la accepté de répondre). Juste pour être clair, je pars quelques autres exemples:(\s)([a-z])
(\s
correspond également à de nouvelles lignes, c'est à dire "vénus" => "Vénus")$1\u$2
(\s)([A-Z])
$1\l$2
([a-z])([A-Z])
$1\l$2
(\w)([A-Z]+)
$1\L$2
\L$0
(\w)([A-Z]+)
$1\U$2
(\w+)([A-Z])
\U$1$2
(\w+)([A-Z])
\L$1$2
([A-Z])(\w+)
$1\U$2
([A-Z])(\w+)
$1\L$2
([a-z\s])([A-Z])(\w)
$1\l$2\u$3
(\w)([A-Z])([a-z\s])
\u$1\l$2$3
Sur la question (match les mots contenant au moins une lettre majuscule, une lettre minuscule et de les rendre en minuscules), leemour commentaire-réponse est le bonne réponse. Juste pour clarifier, si il y a un seul groupe pour le remplacer, vous pouvez simplement utiliser
?:
à l'intérieur des groupes (c'est à dire non capturer des groupes) ou d'éviter de les créer à tous:((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))
OU([a-z][A-Z]+|[A-Z]+[a-z])
\L$1
2016-06-23 Modifier
Tyler suggéré par l'édition de cette réponse une autre trouver une expression pour le #4:
(\B)([A-Z]+)
Selon la la documentation,
\B
va chercher un personnage qui n'est pas à la parole de la frontière (c'est à dire pas au début et non à la fin). Vous pouvez utiliser le Remplacer Tous les bouton et il fait exactement la même chose que si vous aviez(\w)([A-Z]+)
comme le trouvent leur expression.Cependant, l'inconvénient de
\B
est qu'il ne permet pas de simples remplacements, peut-être en raison de la trouver " s "pas de limite" restriction (merci de ne modifier cela si vous connaissez la raison exacte).Expression régulière
Trouver:
\w+
Remplacer:
\L$0
\L
Convertit le tout en minuscules$0
Groupes de CaptureDans BBEdit fonctionne de cette (ex.: changer les valeurs d'ID en minuscule):
La recherche d'une quelconque valeur:
<a id="(?P<x>.*?)"></a>
Remplacer avec la même en minuscules:
<a id="\L\P<x>\E"></a>
Était:
<a id="VALUE"></a>
Est devenu:
<a id="value"></a>
Essayer cette
([A-Z])([A-Z]+)\b
$1\L$2
Assurez-vous que la casse est sur (Alt + C)
\L
est pour la minuscule. J'ai mis à jour la question.