2016-07-25 18 views
-1

Ich versuche, Muster zu erstellen für Zeichenfolge folgendeRegelmäßige Muster Ausdruck übereinstimmen

  1. abc deff <XYZ>.xls
  2. <XYZ> abc.xlsx
  3. ABCD.csv

nach unten Muster mit

(\\w*)(\\<)(\\w*)(\\>)(\\w*)(\\.)(\\w*) 

aber es funktioniert nicht für mich

erwartete Ausgabe

1. abc deff <XYZ>.xls 
    g1 = abc deff 
    g2 = XYZ 
    g3 = xls 

2. <XYZ> abc.xlxs 
    g1 = "" 
    g2 = XYZ 
    g3 = xlxs 

3. ABCD.csv 
    g1 = ABCD 
    g2 = "" 
    g3 = csv 

Vielen Dank im Voraus für die Hilfe

+0

Wenn Sie versuchen, Dateien abzugleichen, sind Sie wahrscheinlich besser mit einem 'PathMatcher', der entweder regex oder glob anstelle eines ganzen Musters verwendet. – Mena

+0

Wie kommt es, dass Ihre dritte Übereinstimmung eine 'csv' in Gruppe 3 enthält, wenn die Zeichenfolge keine' csv' enthält? –

Antwort

0

Wahrscheinlich Nutzung von ? und (?=...(...)) Syntax wird Ihnen helfen. Probieren Sie etwas wie folgt aus:

([^\\.<]*)(<[^>]+>)?(?=\\.(.*)) 

Für eine Phrase abc deff <XYZ>.xls es gibt drei Gruppen abc deff, <XYZ> und xls. Bei Verwendung von positivem Look-Ahead sollten Sie in der Lage sein, <> bei Bedarf zu vermeiden, sehen Sie, wie es für xls -Matching-Gruppe getan wird.

+0

Dank Andrew für Ihren Kommentar – vijendra

Verwandte Themen