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.

Leemour
quelle

Antworten:

393

Du darfst:

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

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

Alex K.
quelle
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

dGo
quelle
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).

Armfuß
quelle
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

BadTudou
quelle
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>

Paul Bondarovski
quelle
0

Versuche dies

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

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

Vignesh Kumar A.
quelle
Das geht nicht Es entspricht 2+ Großbuchstaben. Aber ich verstehe, dass \Ldas für Kleinbuchstaben ist. Ich habe die Frage aktualisiert.
Leemour