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 venUs
und nicht VENUS
.
regex
sublimetext3
sublimetext2
sublimetext
Leemour
quelle
quelle
\U
$1\L$2\E$3
Ich dachte, das könnte auch für andere nützlich sein:
finden:
([A-Z])(.*)
ersetzen:
\L$1$2
-> konvertiert alle Buchstaben in$1
und$2
in Kleinbuchstaben,ABER
\l$1$2
-> konvertiert nur den ersten Buchstaben von$1
in Kleinbuchstaben und lässt alles andere unverändertGleiches gilt für Großbuchstaben mit
\U
und\u
quelle
\l$1$2
würde$1
hier in diesem Fall nur das Ganze in Kleinbuchstaben machen , da es$i
nur einen Buchstaben enthält.\l
=> erster folgender Buchstabe in Kleinbuchstaben und\u
=> erster nachfolgender Buchstabe in Großbuchstaben. Wo\U
und\I
mache es mit allen folgenden Briefen.\E
eine\L
oder\U
Sequenz beendet wird.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:(\s)([a-z])
(entspricht\s
auch neuen Zeilen, dh "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
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:((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))
ODER([a-z][A-Z]+|[A-Z]+[a-z])
\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 ,
\B
wird 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
\B
ist 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).quelle
Regulären Ausdruck
Finden :
\w+
Ersetzen :
\L$0
\L
Konvertiert alles in Kleinbuchstaben$0
Gruppen erfassenquelle
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>
quelle
Versuche dies
([A-Z])([A-Z]+)\b
$1\L$2
Stellen Sie sicher, dass die Groß- / Kleinschreibung aktiviert ist (Alt + C).
quelle
\L
das für Kleinbuchstaben ist. Ich habe die Frage aktualisiert.