2016-03-26 15 views
-2

Ich habe String alsParse String mit Muster und Matcher

str = "-------------Date 26032016 
Hi Team, I am alone. 
-------------Time 206066"; 

Ich brauche

Hallo Team, bin ich allein.

ich folgenden Code verwenden aber

Pattern p = Pattern.compile("(-*?) H"); 
     Matcher m = p.matcher(str); 
     while (m.find()) { 
      part = m.group(1); 
     } 
Pattern p1 = Pattern.compile("(.*?) -"); 
     Matcher m1 = p1.matcher(part); 
     while (m1.find()) { 
      part1 = m1.group(1); 
     } 

aber nicht funktioniert.

Ich versuche, eine Zeichenfolge zwischen Datum (für zB. ------------- Datum 26032016) und Zeit (für zB ----------- --Zeit 206066).

+0

Was ist Ihre erwartete Ausgabe? –

+0

Hallo zusammen! Denkst du, du könntest etwas erweitern, was du versuchst zu tun? Wenn Sie nur versuchen, diese Zeichenfolge zu finden, können Sie nicht einfach für die Zeichenfolge selbst übereinstimmen? Oder versuchen Sie, eine beliebige Zeichenfolge zwischen den Strichen und Daten zu finden? – Kezz101

+0

Ich brauche Hallo Team, ich bin alleine. – user2806992

Antwort

1

Warum verwenden Sie mehrere Matcher? Sie könnten einfach verwenden:

-*Date \\d{8}\n(.*)\n-*Time \\d{6} 

Dies setzt voraus, dass die Leitungen mit String-Wert whown sind wirklich verschiedene Linien und nicht nur accidential Zeilenumbruch.

Andernfalls müssen Sie ersetzen (oder löschen), um die \n Zeichen aus dem Muster

+0

I-Ausgang als Hallo-Team bin immer, ich bin allein .--------- wie diese entfernen „-----------“ – user2806992

+0

übernehmen würde '*' fehlt das zweite '-'. Oder Sie haben keine Zeilenumbrüche. Dann nimmt '(. *)' Irgendein Zeichen an. Sie sollten '- +' für den zweiten Bindestrich verwenden. (mindestens ein Strich) – rpy

+0

Hoppla, kann schade sein. Sie müssen den Strich aus dem Ergebnis ausschließen: '(. * [^ -])'. – rpy

0

Sie können wie diese Websites verwenden, um einen regulären Ausdruck zu erstellen: https://regex101.com/

dies funktionieren soll:

Pattern p = Pattern.compile("-*Date \\d*\\r?\\n?(.*)\\r?\\n?-*Time \\d*"); 
Matcher m = p.matcher(str); 
while (m.find()) { 
      part = m.group(1); //part is now 'Hi Team, I am alone.' 

}

+0

Ich Ausgabe als Hallo-Team bekommen, ich bin allein .--------- Wie diese „-----------“ – user2806992

+0

auf diesem eine Idee zu entfernen. – user2806992

+0

Bitte überprüfen Sie Ihre Eingabezeichenfolge erneut, Sie können (. *) Zu ([^ -] *) ändern – LiozM