2016-09-22 33 views
1

Kann mir jemand helfen, einen regulären Ausdruck zum Suchen und Ersetzen zu erstellen?Regulärer Ausdruck in Notepad ++ oder anderen Editoren

Original-Aussage

rb[10]; 

rf[10]; 

eg[10]; 

ersetzen mit

rb[10-1]; 

rf[10-1]; 

eg[10]; 

Die Zahl "10" kann variieren zwischen 1 bis 500

ich nur die Variablen rf und rb ändern möchten, und zB unverändert lassen. Außerdem möchte ich nur die Zahlen zwischen '[]' ändern und '-1' zu dieser Nummer hinzufügen. Die Variablen rf, rb können zB irgendwo in der Zeile stehen, nicht unbedingt am Anfang oder am Ende der Zeile.

Wie Sie alle sehen können, modifiziere ich einen Fortran Code zu C Code. Ich möchte nur Array-Indizes ändern und alles unverändert lassen.

+0

Und was ist die Regel? Haben Sie noch etwas versucht, um zu sehen, wonach Sie wirklich suchen? –

Antwort

0

Sie eine ziemlich einfache regex wie diese verwenden:

(\d+) 

und eine Ersatz-String mit \1-1

Regex demo

enter image description here

Update: für Ihre Kommentare, Sie kann eine Regex wie diese verwenden (mit derselben Ersatzzeichenfolge)):

(r[bf]\[\d+) 
+0

Ich wollte das nur für die Variable RF und RB ändern.Ich möchte die Variable zB unverändert lassen. Gibt es eine Möglichkeit, die ich im regulären Ausdruck angeben kann. – user3357091

+0

Auch gibt es eine Möglichkeit, einen regulären Ausdruck zu erstellen, um den Text zwischen '[]' auszuwählen und den Text durch '-1' zu ersetzen. – user3357091

+0

Wie Sie feststellen können, konvertiere ich einen Fortran-Code in einen C-Code. Ich möchte nur die Array-Indizes ändern und alle anderen Zahlen unverändert lassen. – user3357091

1

können Sie

\b(rb|rf)\[(\d+)\] 

verwenden und mit $1[$2-1] ersetzen.

Einzelheiten:

  • \b - Wortgrenze (der vorhergehende char ein nicht-Wort sein soll, oder die Zeile beginnen)
  • (rb|rf) - Gruppe 1 (bezeichnet später als $1 im Ersatz Muster) Erfassung entweder rb oder rf (Hinweis r[bf] ist eine viel bessere Art, es zu schreiben)
  • \[ - ein Literal [ Symbol
  • (\d+) - Gruppe 2 (später bezeichnet als $2 im Ersetzungsmuster) erfassen 1 oder mehr Ziffern (wenn Sie einen bestimmten Bereich von 1 bis 500 nur übereinstimmen sollen, ersetzen \d+ mit (?:500|[1-4]?\d{2}|[1-9]))
  • \] - einem wörtlichen ] Symbol

enter image description here