2016-06-29 12 views
0

Dies ist Teil einer Liste. Alle Zeilen müssen am Anfang jeder Zeile mit Nullen bis zu 12 Zeichen gefüllt werden. Einige Zeilen sind bereits Länge 12 ...Linie auf spezifische Länge füllen Regex

801095126710 
2227121 
19472168 
21521070 
21945110 
25260089 
92000077 
93400015 
132300300 
132405100 
211304212 
934000107 
934000108 
934000110 
934000120 
934000144 
93400138 
160908013840 
822100052908 
822100053358 

Wie kann dies mit Regex getan werden?

+0

Sie wollen zeigen, F. E. ändern 93400138 bis 000000000000 oder 93400138 -> 000093400138? –

+0

Nullen hinzufügen. nicht ersetzen. ja ja 000093400138 –

+0

Wie Thomas Ayoub sagte, ist es nicht wirklich möglich, Mathe mit Regex zu tun. Dies wäre wirklich einfach und leicht mit einem einfachen Skript zu tun, und ich würde vorschlagen, das zu untersuchen, wenn dies ein größeres, wiederkehrendes Problem ist. –

Antwort

2

Warnung das ist hässlich.

Sie können aussehen:

^(.{0,11})$ 

und ersetzen mit 0$1. Klicken Sie auf ersetzen Sie alle 11 mal und voilà.


Sie nicht tun Mathe mit regex. Regex sind für String-Matching.

+0

Können Sie mir das 0 $ 1 erklären? Ich bin nicht so fortgeschritten in Regex, und es stört mich von Zeit zu Zeit. Wie finde ich ein Muster und ändere es in 1084 ... this_pattern "Hallo Welt" –

+1

'0' bedeutet, gut' 0'. '$ 1' bedeutet * der Wert aus der ersten einfangenden Gruppe * @ MichałM –

+0

Also wenn ich (\ d +) (\ w +) (\! @ # $%^&) Finde (Sonderzeichen natürlich mit '\') , um es durch \ w + zu ersetzen Ich muss $ 2 setzen? –

1

Beschreibung

Ich sehe das als ein zweistufiger Prozess. Schritt Eins 12 0 am Anfang jeder Zeile einfügen. In Schritt 2 werden die letzten 12 Zeichen und alle führenden 0 erfasst und durch nur die 12 erfassten Zeichen ersetzt.


Step One - Ersetzen Sie Kommas mit 10 Räumen

^ 

Ersetzen durch:000000000000

Live Demo:https://regex101.com/r/rM8bK2/1

Beispieltext

801095126710 
2227121 
19472168 
21521070 
21945110 
25260089 
92000077 
93400015 
132300300 
132405100 
211304212 
934000107 
934000108 
934000110 
934000120 
934000144 
93400138 
160908013840 
822100052908 
822100053358 

Nach Ersatz

000000000000801095126710 
0000000000002227121 
00000000000019472168 
00000000000021521070 
00000000000021945110 
00000000000025260089 
00000000000092000077 
00000000000093400015 
000000000000132300300 
000000000000132405100 
000000000000211304212 
000000000000934000107 
000000000000934000108 
000000000000934000110 
000000000000934000120 
000000000000934000144 
00000000000093400138 
000000000000160908013840 
000000000000822100052908 
000000000000822100053358 

123456789,123456789,123456789 

Hinweis: Ich habe die Nummer Zeile hier eingefügt, um die Anzahl und Position der Zeichen


Zweiten Schritt veranschaulichen - Erfassen 10 Zeichen und alle nachfolgenden Leerzeichen

0*([0-9]{12})$ 

Ersetzen durch:$1

Live Demo:https://regex101.com/r/aS2xG0/1

Beispieltext

Da dieser Schritt zwei ist, ist der Beispieltext der Ausgabe von Schritt über

000000000000801095126710 
0000000000002227121 
00000000000019472168 
00000000000021521070 
00000000000021945110 
00000000000025260089 
00000000000092000077 
00000000000093400015 
000000000000132300300 
000000000000132405100 
000000000000211304212 
000000000000934000107 
000000000000934000108 
000000000000934000110 
000000000000934000120 
000000000000934000144 
00000000000093400138 
000000000000160908013840 
000000000000822100052908 
000000000000822100053358 

Nach Ersatz

801095126710 
000002227121 
000019472168 
000021521070 
000021945110 
000025260089 
000092000077 
000093400015 
000132300300 
000132405100 
000211304212 
000934000107 
000934000108 
000934000110 
000934000120 
000934000144 
000093400138 
160908013840 
822100052908 
822100053358  
123456789,123456789, 

Hinweis: Ich habe die Nummer Zeile hier eingefügt, um die Anzahl und Position der Zeichen

Verwandte Themen