2017-08-28 1 views
1

ich die Folge Text habe:Regex letzte Zeichen der Capture-Gruppe entfernen

2017-08-28 08:44:12,2017-08-28 08:45:57,105.524,any,80,6415,13.2,458434,20.1,439004310,30.3,4344,33281855,957 

und die Folge regex:

^(?:[^\,]*\,){4}([^,]*)(80){1,5}([^\,]*\,){9}.* 

ich erfassen das Wort 33281855, als drittes Gruppenspiel. Aber ich brauche dieses Wort ohne das Komma, genau wie 33281855.
Wie kann ich das Komma entfernen?

+0

Warum ersetzen Sie das Komma nicht. –

+0

Keine Notwendigkeit, ein Komma zu entkommen. –

+0

@Wagner Hatten Sie Zeit, um meine Lösung unten zu überprüfen? –

Antwort

0

Der einfachste Weg, um es zu beheben ist die (a,){9} in a(?:,(a)){8} aufzurollen:

^(?:[^,]*,){4}([^,]*)(80){1,5}[^,]*(?:,([^,]*)){8}.* 
           ^^^^^^^^^^^^^^^^^^^^ 

Siehe regex demo

Jetzt wird [^,]*(?:,([^,]*)){8} entsprechen 0+ Zeichen andere als ,, (mit [^,]*) und dann genau 8 Vorkommen von , und dann 0+ Zeichen, die nicht , sind, werden während der Erfassung der Nicht-, Stücke in Gruppe 2 (die letzte wird mit der Übereinstimmung zurückgegeben) übereinstimmen.

Beachten Sie, dass ein Komma kein spezielles Regex-Metazeichen ist und Sie nicht entkommen müssen.

+0

danke, genau das – Wagner

+0

@Wagner Bitte akzeptieren Sie die Antwort, wenn es für Sie funktioniert. –

Verwandte Themen