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 venUs
et non VENUS
.
\U
$1\L$2\E$3
J'ai pensé que cela pourrait aussi être utile pour les autres:
trouver:
([A-Z])(.*)
remplacer:
\L$1$2
-> convertit toutes les lettres en$1
et$2
en minusculesMAIS
\l$1$2
-> convertira uniquement la première lettre de$1
en minuscules et laissera tout le reste tel quelIl en va de même pour les majuscules avec
\U
et\u
la source
\l$1$2
ne ferait que le tout$1
en minuscules dans ce cas ici, car$i
ne contient qu'une seule lettre.\l
=> première lettre suivante en minuscules et\u
=> première lettre suivante en majuscules. Où\U
et le\I
faire à toutes les lettres suivantes.\E
met fin à une séquence\L
ou\U
.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:(\s)([a-z])
(\s
correspond également aux nouvelles lignes, par exemple "venuS" => "VenuS")$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
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:((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))
OU([a-z][A-Z]+|[A-Z]+[a-z])
\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 ,
\B
recherchera 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
\B
est 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).la source
Expression régulière
Trouver :
\w+
Remplacez :
\L$0
\L
Convertit tout en minuscules$0
Capturer des groupesla source
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>
la source
Essaye ça
([A-Z])([A-Z]+)\b
$1\L$2
Assurez-vous que la casse est activée (Alt + C)
la source
\L
c'est pour les minuscules. J'ai mis à jour la question.