2009-07-21 12 views
125

Ich schrieb einen regulären Ausdruck in der Hoffnung, dass ich jede Übereinstimmung (das ist nur ein char) zu Großbuchstaben ersetzen kann. Ich benutze EditPad Pro (aber ich bin bereit, jedes andere Werkzeug zu benutzen, das mir erlauben würde, dies zu tun, solange es kostenlos ist, da ich es nur einmal machen muss).Konvertiere ein Zeichen in Großbuchstaben mit regulären Ausdrücken (EditPad Pro)

Hintergrund: Ich habe eine sehr lange Textdatei von einer Groß-und Kleinschreibung Anwendung verwendet, und einige Wörter beginnen mit Kleinbuchstaben anstelle von Großbuchstaben char, so dass die Anwendung abstürzt. Dies würde von Hand sehr lange dauern, und es wäre ziemlich kompliziert, auf reguläre Ausdrücke zu verzichten, weil das Auftreten des (schlechten) Kleinbuchstaben-Zeichens sehr spezifisch ist.

Ich habe den Select-regulären Ausdruck geschrieben und jetzt kann ich es mit einer Rückreferenz verwenden ($ 1 funktioniert gut), aber ich kann es nicht mit Großbuchstaben char ersetzen. Ich dachte, etwas wie \ u $ 1 würde funktionieren, jedoch nicht in EditPad Pro.

Wenn kein kostenloses Tool mir dies erlaubt, würde ich die Alternative vielleicht nur in C# machen, aber ich bin in Eile und nicht in der Nähe eines Compilers, also müsste ich den Express herunterladen Ausgabe zuerst, also ... Es wäre besser, ein Werkzeug zu finden, das solch eine Funktion unterstützt!

Vielen Dank!

+3

Ist diese Frage für Superuser besser geeignet? – georgiecasey

Antwort

200

Mit TextPad können Sie diesen Vorgang ausführen.

Beispiel:

test this sentence 

Suchen nach: \([^ ]*\) \(.*\) Ersetzen durch: \U\1\E \2

die \U werden alle folgenden Zeichen verursachen oberen sein

die \E die \U

ausschalten

wird das Ergebnis sein:

TEST this sentence 
+12

Gibt es eine Möglichkeit, diese Operation in .NET Regex auszuführen (ohne 'ToUpper' zu verwenden)? – Shimmy

+31

Funktioniert auch in Notepad ++. – Shawn

+28

'\ U $ 1 \ E' in _Sublime Text_ – Qwerty

24

EditPad Pro und PowerGREP haben eine einzigartige Funktion, die Sie Änderung der Fall des Rückreferenzierung ermöglicht. \U1 Einsätze die erste Rückreferenzierung in Großbuchstaben, Kleinbuchstaben und in \L1 \F1 mit dem ersten Zeichen in Großbuchstaben und der Rest in Kleinbuchstaben. Schließlich \I1 fügt es mit dem ersten Buchstaben jedes Wortes Großbuchstaben, und die anderen Buchstaben in Kleinbuchstaben.

Quelle: Goyvaerts, Jan (2006). Reguläre Ausdrücke: Das vollständige Lernprogramm. Lulu.com. p. 35. ISBN 1411677609. Google Bücher. Abgerufen am 25. Juni 2010.

+6

Ich habe EditPad Pro als eines der besten Texteditoren für RegEx Power User gefunden ... –

7

Sie können dies in jEdit tun, indem Sie die Option "Rückgabewert eines BeanShell-Snippets" im Dialogfeld Suchen und Ersetzen von jEdit verwenden.Suchen Sie einfach nach " [a-z]" und ersetzen Sie es durch " _0.toUpperCase()" (ohne Anführungszeichen)

+1

Ihre Antwort ist nicht wirklich auf die erste Frage bezogen, aber ich habe gefunden es beim googeln und genau das war was ich suchte. Super, danke! – adietisheim

3

Sie können auch den ersten Buchstaben des Spiels mit \I1 und \I2 etc statt $1 und $2 Kapital zu schlagen.

20

Ich weiß, dass dieser Thread über EditPad Pro ist. Aber ich kam wegen der Javascript Regexp gleich hier.

Für die Leute, die hier den gleichen Tipp benötigen, können Sie für Javascript regexp eine Funktion als Ersetzungsargument verwenden.

Ich benutze die Funktion unten, um CSS-Namen mit - in die Javascript-Entsprechung zu konvertieren, zum Beispiel: "border-top" wird in "borderTop" umgewandelt;

s = s.replace(/\-[a-z]/g, function(x){return x[1].toUpperCase();}); 
+2

Dies ist vielleicht eine eigene Frage und Antwort wert. (Sie werden ermutigt, Ihre eigenen Fragen zu beantworten.) – Stewart

Verwandte Themen