Regex ersetzt Großbuchstaben durch Kleinbuchstaben


220

Ich versuche, Großbuchstaben durch Regex durch entsprechende Kleinbuchstaben zu ersetzen. Damit

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

wird

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

im erhabenen Text. Wie kann ich Buchstaben nur in Wörtern in Kleinbuchstaben schreiben, die sowohl Klein- als auch Großbuchstaben enthalten? Damit es wirkt venUsund nicht VENUS.

Antworten:


393

Du darfst:

Suchen: (\w) Ersetzen durch:\L$1

Oder wählen Sie den Text ctrl+ K+ L.


7
Super. sehr hilfreich. Könnten Sie bitte auf eine Ressource verweisen, in der Transformationen wie '\ L' aufgelistet sind?
Codious-JR

17
Sublime verwendet Boost für seine RegEx-Unterstützung. Dies sind die Dokumente für die Formatzeichenfolgen
Alex K.

4
Und in IntelliJ
Patrick

11
Hinweis: Um in Großbuchstaben zu gelangen, benötigen Sie\U
takanuva15

2
Um nur einen einzelnen Parameter in Kleinbuchstaben zu schreiben, setzen Sie \ E danach, um den Kleinbuchstaben zu beenden: $1\L$2\E$3
Michael

129

Ich dachte, das könnte auch für andere nützlich sein:

finden:

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

ersetzen:

  • \L$1$2-> konvertiert alle Buchstaben in $1und $2in Kleinbuchstaben,
    ABER
  • \l$1$2-> konvertiert nur den ersten Buchstaben von $1in Kleinbuchstaben und lässt alles andere unverändert

Gleiches gilt für Großbuchstaben mit \Uund\u


7
\l$1$2würde $1hier in diesem Fall nur das Ganze in Kleinbuchstaben machen , da es $inur einen Buchstaben enthält. \l=> erster folgender Buchstabe in Kleinbuchstaben und \u=> erster nachfolgender Buchstabe in Großbuchstaben. Wo \Uund \Imache es mit allen folgenden Briefen.
Raisch

5
Beachten Sie, dass \Eeine \Loder \USequenz beendet wird.
Ludovic Kuty

77

Bevor Sie mit Regex wie suchen [A-Z], sollten Sie die Groß- / Kleinschreibungstaste (oder Alt+ C) drücken ( wie von Leemour empfohlen , in der akzeptierten Antwort bearbeitet zu werden). Um ganz klar zu sein, ich hinterlasse ein paar andere Beispiele:

  1. Großschreibung von Wörtern
    • Suchen: (\s)([a-z])(entspricht \sauch neuen Zeilen, dh "venuS" => "VenuS")
    • Ersetzen: $1\u$2
  2. Wörter nicht kapitalisieren
    • Finden: (\s)([A-Z])
    • Ersetzen: $1\l$2
  3. Entfernen Kamel Fall (zB Camelcase => Camelcase => Camelcase)
    • Finden: ([a-z])([A-Z])
    • Ersetzen: $1\l$2
  4. Kleinbuchstaben in Wörtern (z. B. Kleinbuchstaben => Kleinbuchstaben)
    • Finden: (\w)([A-Z]+)
    • Ersetzen: $1\L$2
    • Alternatives Ersetzen: \L$0
  5. Großbuchstaben in Wörtern (z. B. UpperCASe => uPPERCASE)
    • Finden: (\w)([A-Z]+)
    • Ersetzen: $1\U$2
  6. Großbuchstabe vorher (zB UpperCase => UPPERCase)
    • Finden: (\w+)([A-Z])
    • Ersetzen: \U$1$2
  7. Vorheriger Kleinbuchstabe (zB LOWERCase => lowerCase)
    • Finden: (\w+)([A-Z])
    • Ersetzen: \L$1$2
  8. Den Rest in Großbuchstaben schreiben (z. B. UpperCase => UpperCASE)
    • Finden: ([A-Z])(\w+)
    • Ersetzen: $1\U$2
  9. Den Rest in Kleinbuchstaben schreiben (zB LOWERCASE => lOwercase)
    • Finden: ([A-Z])(\w+)
    • Ersetzen: $1\L$2
  10. Groß- und Kleinschreibung nach rechts verschieben (z. B. Case => cAse => caSe => casE)
    • Finden: ([a-z\s])([A-Z])(\w)
    • Ersetzen: $1\l$2\u$3
  11. Umschalt-Links-Großbuchstaben (zB CasE => CaSe => CAse => Case)
    • Finden: (\w)([A-Z])([a-z\s])
    • Ersetzen: \u$1\l$2$3

In Bezug auf die Frage ( Wörter mit mindestens einem Groß- und einem Kleinbuchstaben abgleichen und in Kleinbuchstaben schreiben ) ist die Kommentarantwort von leemour die richtige Antwort . Nur um zu verdeutlichen, ob nur eine Gruppe ersetzt werden muss, können Sie sie nur ?:in den inneren Gruppen (dh nicht erfassten Gruppen ) verwenden oder vermeiden, sie überhaupt zu erstellen:

  • Finden: ((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))ODER([a-z][A-Z]+|[A-Z]+[a-z])
  • Ersetzen: \L$1

2016-06-23 Bearbeiten

Tyler schlug durch Bearbeiten dieser Antwort einen alternativen Suchausdruck für # 4 vor:

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

Gemäß der Dokumentation , \Bwird nach einem Zeichen suchen , die nicht an dem Wort des Grenze (also nicht am Anfang und nicht am Ende). Sie können die Schaltfläche Alle ersetzen verwenden und sie macht genau das Gleiche, als hätten Sie (\w)([A-Z]+)den Suchausdruck.

Der Nachteil von \Bist jedoch, dass es keine einzelnen Ersetzungen zulässt, möglicherweise aufgrund der Einschränkung "Nicht begrenzt" des Fundes (bitte bearbeiten Sie diese, wenn Sie den genauen Grund kennen).


2

Regulären Ausdruck

Finden :\w+

Ersetzen :\L$0

Sublime Text verwendet die PCRE-Engine (Perl Compatible Regular Expressions) aus der Boost-Bibliothek, um reguläre Ausdrücke in Suchfeldern zu aktivieren.

\L Konvertiert alles in Kleinbuchstaben

$0 Gruppen erfassen


Bitte machen Sie dies zu einer vollständigen Antwort, nicht nur zu einer Code-Antwort ohne Erklärung.
Petezurich

1

In BBEdit funktioniert dies (Beispiel: Ändern der ID-Werte in Kleinbuchstaben):

Suchen Sie einen beliebigen Wert: <a id="(?P<x>.*?)"></a> Ersetzen Sie ihn durch denselben in Kleinbuchstaben:<a id="\L\P<x>\E"></a>

War: <a id="VALUE"></a> Wurde:<a id="value"></a>


0

Versuche dies

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

Stellen Sie sicher, dass die Groß- / Kleinschreibung aktiviert ist (Alt + C).


Das geht nicht Es entspricht 2+ Großbuchstaben. Aber ich verstehe, dass \Ldas für Kleinbuchstaben ist. Ich habe die Frage aktualisiert.
Leemour
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.