Erhabener Text Suchen Ersetzt ein beliebiges Zeichen

2

Gibt es eine Möglichkeit, mithilfe eines Sonderzeichens Zeichen zu finden und zu ersetzen, mit denen Zeichen an ihrer Stelle angezeigt werden können?

Damit meine ich sagen, ich habe den folgenden Text:

setI0100(mds3a1.getI0100().toString());
setI0200(mds3a1.getI0200().toString());
setI0300(mds3a1.getI0300().toString());
setI0400(mds3a1.getI0400().toString());
setI0500(mds3a1.getI0500().toString());
setI0600(mds3a1.getI0600().toString());
setI0700(mds3a1.getI0700().toString());
setI0800(mds3a1.getI0800().toString());
setI0900(mds3a1.getI0900().toString());
setI1100(mds3a1.getI1100().toString());
setI1200(mds3a1.getI1200().toString());
setI1300(mds3a1.getI1300().toString());

und ich wollte ersetzen mit etwas wie (mds3a1.getI *** (). toString ()); Ersetzen des Endes aller obigen Zeilen nach dem Anfangsbuchstaben (.

Wobei * einem beliebigen Zeichen entsprechen kann. Gestatten Sie mir, die Endungen aller obigen Zeilen zu ersetzen, obwohl sie nicht unbedingt alle gleich sind. Eine Zeile würde so aussehen:

Before:
    setI0100(mds3a1.getI0100().toString());
After:
    setI0100

Ich habe ähnliche Funktionen in anderen Programmen gesehen, bin mir jedoch nicht sicher, wie dieses Verhalten lauten soll.

EDIT: Am Ende habe ich nach regulären Ausdrücken gesucht, wie @DavidPostill unten zeigt.

Um das zu tun, was ich wollte, ergab sich Folgendes:

find: (\(mds3a1.getJ)....+(().toString\(\)\);)
replace: 

das würde mich mit dem Text jeder Zeile bis und ohne die erste verlassen (

Für alle, die Regex mit großartigem Text verwenden möchten, ist dies eine gute Ressource, die ich gefunden habe. https://github.com/dmikalova/sublime-cheat-sheets/blob/master/cheat-sheets/Regular%20Expressions.cheatsheet

Charles S
quelle
Möchten Sie alle aktuellen Optionen abgleichen und durch eine einzige ersetzen? Bitte fügen Sie Ihrer Frage weitere Beispiele hinzu. Es ist ziemlich unklar, was Sie fragen.
MattDMo
@MattDMo Grundsätzlich möchte ich das Ende abhacken, beginnend mit "(mds" jeder dieser Zeilen. Ich habe versucht, in der ersten Frage ein bisschen mehr zu klären.
Charles S
1
Ich versuche mir das Tippen zu ersparen und möchte nur den gesamten Text aus jeder Zeile vor der ersten
Charles S
1
Genau dafür sind reguläre Ausdrücke gedacht. Beginnen Sie mit dem Lesen von docs.sublimetext.info/en/latest/search_and_replace/…
DavidPostill
@ DavidPostill, wenn Sie das beantworten könnten, würde ich Ihnen gerne einen +
Charles S

Antworten:

1

Es scheint, dass die MattDMo-Antwort nicht das richtige Muster für die gewünschten Ergebnisse ist. Folgendes habe ich für eine elegantere Lösung getan:

Öffnen Sie Sublime Text 2

Fügen Sie den Block ein:

setI0100(mds3a1.getI0100().toString());
setI0200(mds3a1.getI0200().toString());
setI0300(mds3a1.getI0300().toString());
setI0400(mds3a1.getI0400().toString());
setI0500(mds3a1.getI0500().toString());
setI0600(mds3a1.getI0600().toString());
setI0700(mds3a1.getI0700().toString());
setI0800(mds3a1.getI0800().toString());
setI0900(mds3a1.getI0900().toString());
setI1100(mds3a1.getI1100().toString());
setI1200(mds3a1.getI1200().toString());
setI1300(mds3a1.getI1300().toString());

Suchen> Ersetzen ( CTRL+ H)

Schaltfläche "Reguläre Ausdrücke aktivieren" ( Alt+ R)

Finde was: \(.*

Ersetzen durch: [ Keine Zeichen hier ]

Klicken Sie auf Alle ersetzen

Erledigt

Das Ergebnis ist das, wonach Sie gefragt haben:

Before:
    setI0100(mds3a1.getI0100().toString());
After:
    setI0100

Regex-Aufschlüsselung:

\(Kombiniere und entkomme dem (Charakter.

. Stimmt mit einem einzelnen Zeichen überein.

* Stimmt mit dem vorhergehenden Zeichen 0 oder mehrmals überein.

projectdp
quelle
Sie haben Recht. In meiner Eile bemerkte ich nicht, dass MattDMos Antwort nicht genau das war, was ich wollte. Ich bemerkte es erst kurz nachdem ich es als Antwort ausgewählt hatte. Um fair zu sein, meine Frage war nicht so klar, wie es hätte sein können. Ich hätte auch ein bisschen mehr testen sollen, bevor ich es als Antwort auswählte. Vielen Dank für die absolut richtige Antwort. Genau das habe ich gesucht.
Charles S
1

Aktivieren Sie die Regex-Suche im Dialogfeld "Suchen" und verwenden Sie das folgende Muster:

^(.*?)(?=\()

Dies beginnt am Anfang der Zeile ( ^) und erfasst dann ein beliebiges Zeichen ( (.*?)) bis zum nicht erfassenden positiven Lookahead ( (?=\()).

MattDMo
quelle
Oh, ich mag das eigentlich mehr als das, was ich mir ausgedacht habe. Vielen Dank @MattDMo
Charles S
1
Kein Problem. Es
lohnt sich
Meine Hände, danke, haben 4000 Zeilen davon zu erledigen:>
Charles S
1
Nun, wenn Sie mehr Regex-Hilfe benötigen, posten Sie einfach auf Stack Overflow und markieren Sie es regex. Machen Sie zuerst einen ehrlichen Versuch, und wenn Sie es vermasseln, stehen viele Leute bereit, um zu helfen. Stellen Sie sicher, dass Sie es sublimetextauch markieren , damit sie wissen, mit welchem ​​Geschmack sie es zu tun haben.
MattDMo