Estoy tratando de reemplazar letras mayúsculas con letras minúsculas correspondientes usando expresiones regulares. Así que eso
EarTH: 1,
MerCury: 0.2408467,
venuS: 0.61519726,
se convierte
earth: 1,
mercury: 0.2408467,
venus: 0.61519726,
en texto sublime. ¿Cómo puedo escribir letras minúsculas solo en palabras que contienen letras mayúsculas y minúsculas? Para que afecte venUs
y no VENUS
.
regex
sublimetext3
sublimetext2
sublimetext
leemour
fuente
fuente
\U
$1\L$2\E$3
Supuse que esto también podría ser útil para otros:
encontrar:
([A-Z])(.*)
reemplazar:
\L$1$2
-> va a convertir todas las letras en$1
y$2
en minúsculasPERO
\l$1$2
-> solo convertirá la primera letra de$1
a minúscula y dejará todo lo demás como estáLo mismo ocurre con mayúsculas
\U
y\u
fuente
\l$1$2
$1
en este caso solo haría el todo en minúsculas, porque$i
contiene solo una letra.\l
=> primera letra siguiente en minúscula y\u
=> primera letra siguiente en mayúscula. Donde\U
y\I
haciéndolo a todas las siguientes letras.\E
termina una\L
o\U
secuencia.Antes de buscar con expresiones regulares como
[A-Z]
, debe presionar el botón de mayúsculas y minúsculas (o Alt+ C) (como leemour sugirió muy bien que se edite en la respuesta aceptada). Para ser claros, les dejo algunos otros ejemplos:(\s)([a-z])
(\s
también coincide con nuevas líneas, es decir, "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
Con respecto a la pregunta (unir palabras con al menos una letra mayúscula y una minúscula y hacerlas minúsculas), la respuesta de comentario de leemour es la respuesta correcta . Solo para aclarar, si solo hay un grupo para reemplazar, puede usarlo
?:
en los grupos internos (es decir, grupos que no son de captura ) o evitar crearlos:((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))
O([a-z][A-Z]+|[A-Z]+[a-z])
\L$1
2016-06-23 Editar
Tyler sugirió al editar esta respuesta una expresión de búsqueda alternativa para el n. ° 4:
(\B)([A-Z]+)
De acuerdo con la documentación ,
\B
buscará un carácter que no se encuentre en el límite de la palabra (es decir, no al principio ni al final). Puede usar el botón Reemplazar todo y hace exactamente lo mismo que si tuviera(\w)([A-Z]+)
como expresión de búsqueda.Sin embargo, la desventaja
\B
es que no permite reemplazos individuales, tal vez debido a la restricción "no límite" del hallazgo (edite esto si conoce el motivo exacto).fuente
Expresión regular
Encuentra :
\w+
Reemplazar :
\L$0
\L
Convierte todo a minúsculas$0
Grupos de capturafuente
En BBEdit funciona esto (ej .: cambiar los valores de ID a minúsculas):
Buscar cualquier valor:
<a id="(?P<x>.*?)"></a>
reemplazar con el mismo en minúsculas:<a id="\L\P<x>\E"></a>
Fue: se
<a id="VALUE"></a>
convirtió en:<a id="value"></a>
fuente
Prueba esto
([A-Z])([A-Z]+)\b
$1\L$2
Asegúrese de que la sensibilidad a mayúsculas y minúsculas esté activada (Alt + C)
fuente
\L
es para minúsculas. Actualicé la pregunta.