Zurückspulen als nächstes Startposition um 1?

8

Wie kann ich den Anfang der nächsten Suchposition um 1 zurückspulen? Angenommen, ich möchte alle Ziffern zwischen # abgleichen. Das Folgende wird mir nur ungerade Zahlen geben.

%Vor%

Aber wenn ich den Anfang der nächsten Position um 1 zurückspulen könnte, würde ich sowohl gerade als auch ungerade Zahlen bekommen.

Dies funktioniert nicht: pos() = pos() - 1;

Ich weiß, dass ich das mit split erreichen kann. Aber das beantwortet meine Frage nicht.

%Vor%     
n.r. 21.07.2015, 15:21
quelle

2 Antworten

8

Sie rufen pos() auf $_ anstelle von $data

auf

Von perldoc

  

Gibt den Offset der letzten m // g Suche für die fragliche Variable zurück ($ _ wird verwendet, wenn die Variable nicht angegeben ist)

Also,

%Vor%     
Сухой27 21.07.2015, 15:25
quelle
11

Ein Ansatz besteht darin, eine Look-Ahead-Bestätigung zu verwenden:

%Vor%

Die Zeichen in der Look-Ahead-Assertion sind nicht Teil des übereinstimmenden Ausdrucks und aktualisieren pos() nicht nach dem \d -Teil des regulären Ausdrucks.

Weitere Demos:

%Vor%     
mob 21.07.2015 15:25
quelle

Tags und Links