2016-10-27 4 views
0

Ich möchte ausschließen, wenn es Wort ist, aber ein einzelnes Zeichen enthalten möchten.Regex für das folgende Muster

Mein Regex:

(\d{2})\[\.\](\d+)\[\.\](\d+|\d\w+)\[\.\]\. 

Ich erhalte:

16.03.01a.SPA.bin ->16.03.01aS

03.17.00.S.156-1.S-std.bin ->03.17.00S

03.16.04a.S.155-3.S4a-ext.bin ->03.16.04aS

Erwartete Ausgabe:

16.03.01a.SPA.bin ->16.03.01a

03.17.00.S.156-1.S-std.bin ->03.17.00S

03.16.04a.S.155-3.S4a-ext.bin ->03.16.04aS

Die erste einzelnes Zeichen von Wort nimmt, aber ich don‘ Ich will es.

+0

Die '' am Ende Ihres Regulärer Ausdruck entspricht einem Punkt, auf den ein anderes Zeichen folgt. Sie könnten etwas wie '(\ d {2}) \. (\ D +) \. (\ D \ w +) (? = \ ..)' abhängig von der Engine, die Sie verwenden, ausprobieren. – Phylogenesis

+0

Die letzte. gibt das einzelne Zeichen, aber ich will nicht in der ersten Ausgabe. Ich weiß nicht, was ich dort hinlegen muss. Deshalb habe ich '.' there – user2314868

+0

Bitte geben Sie an, welche Sprache oder welches Werkzeug Sie verwenden, und zeigen Sie den Code an, der die dargestellte Transformation ausführt (da eine Umwandlung mehr als nur eine Regex beinhaltet). – ruakh

Antwort

1

Wie in den Kommentaren diskutiert, werden Sie nach dem folgenden regulären Ausdruck suchen:

(\d{2})\.(\d+)\.(\d\w*)(?:\.(.)(?=\.)|) 

Gegliedert, ist dies: [.].

(\d{2})    Match 2 digits 
\.     Match a period 
(\d+)    Match 1 or more digits 
\.     Match a period 
(\d\w*)    Match a digit followed by 0 or more word characters 
(?: 
    \.    Match a period 
    (.)(?=\.)  Match a single character (as long as the following character is a period) 
    |    OR match nothing at all 
) 
Verwandte Themen