Regex reemplaza mayúsculas por minúsculas


220

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 venUsy no VENUS.

Respuestas:


393

Puedes:

Buscar: (\w) Reemplazar con:\L$1

O seleccione el texto, ctrl+ K+ L.


77
súper. muy útil. ¿Podría señalar algún recurso que enumere transformaciones como '\ L'?
Codious-JR

17
Sublime utiliza Boost para su compatibilidad con RegEx, estos son los documentos para las cadenas de formato como \ L: boost.org/doc/libs/1_44_0/libs/regex/doc/html/boost_regex/…
Alex K.

44
Y en IntelliJ
Patrick

11
Nota: Para ir a mayúsculas, necesitará\U
takanuva15

2
Para poner en minúsculas un solo parámetro, coloque \ E después para finalizar la sección en minúsculas: $1\L$2\E$3
Michael

129

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 $1y $2en minúsculas
    PERO
  • \l$1$2-> solo convertirá la primera letra de $1a minúscula y dejará todo lo demás como está

Lo mismo ocurre con mayúsculas \Uy\u


77
\l$1$2$1en este caso solo haría el todo en minúsculas, porque $icontiene solo una letra. \l=> primera letra siguiente en minúscula y \u=> primera letra siguiente en mayúscula. Donde \Uy \Ihaciéndolo a todas las siguientes letras.
Raisch

55
Tenga en cuenta que \Etermina una \Lo \Usecuencia.
Ludovic Kuty

77

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:

  1. Capitalizar palabras
    • Buscar: (\s)([a-z])( \stambién coincide con nuevas líneas, es decir, "venuS" => "VenuS")
    • Reemplazar: $1\u$2
  2. Descapitalizar palabras
    • Encontrar: (\s)([A-Z])
    • Reemplazar: $1\l$2
  3. Eliminar la caja de camello (por ejemplo, cAmelCAse => camelcAse => camelcase)
    • Encontrar: ([a-z])([A-Z])
    • Reemplazar: $1\l$2
  4. Letras minúsculas dentro de las palabras (por ejemplo, LowerCASe => Minúsculas)
    • Encontrar: (\w)([A-Z]+)
    • Reemplazar: $1\L$2
    • Reemplazo alternativo: \L$0
  5. Letras mayúsculas dentro de las palabras (por ejemplo, upperCASe => uPPERCASE)
    • Encontrar: (\w)([A-Z]+)
    • Reemplazar: $1\U$2
  6. Mayúscula anterior (p. Ej., UpperCase => UPPERCase)
    • Encontrar: (\w+)([A-Z])
    • Reemplazar: \U$1$2
  7. Minúscula anterior (por ejemplo, LOWERCase => lowerCase)
    • Encontrar: (\w+)([A-Z])
    • Reemplazar: \L$1$2
  8. Mayúsculas al resto (por ejemplo, upperCase => upperCASE)
    • Encontrar: ([A-Z])(\w+)
    • Reemplazar: $1\U$2
  9. El resto en minúscula (por ejemplo, minúsculas => minúsculas)
    • Encontrar: ([A-Z])(\w+)
    • Reemplazar: $1\L$2
  10. Mayúsculas-derecha-mayúsculas (p. Ej., Case => cAse => caSe => casE)
    • Encontrar: ([a-z\s])([A-Z])(\w)
    • Reemplazar: $1\l$2\u$3
  11. Mayúsculas-izquierda-mayúsculas (por ejemplo, CasE => CaSe => CAse => Case)
    • Encontrar: (\w)([A-Z])([a-z\s])
    • Reemplazar: \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:

  • Buscar: ((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))O([a-z][A-Z]+|[A-Z]+[a-z])
  • Reemplazar: \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 , \Bbuscará 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 \Bes que no permite reemplazos individuales, tal vez debido a la restricción "no límite" del hallazgo (edite esto si conoce el motivo exacto).


2

Expresión regular

Encuentra :\w+

Reemplazar :\L$0

Sublime Text utiliza el motor de expresiones regulares compatibles con Perl (PCRE) de la biblioteca Boost para potenciar las expresiones regulares en los paneles de búsqueda.

\L Convierte todo a minúsculas

$0 Grupos de captura


Haga que esta sea una respuesta completa, no solo una respuesta de código sin explicación.
petezurich

1

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>


0

Prueba esto

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

Asegúrese de que la sensibilidad a mayúsculas y minúsculas esté activada (Alt + C)


Eso no funciona Coincide con 2+ letras mayúsculas. Pero entiendo que \Les para minúsculas. Actualicé la pregunta.
Leemour
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.