2016-04-15 7 views
1

ich brauche diese Zeichenfolge aufgeteilt:Wie teilt man diese Zeichenfolge in Java Regex?

{COMITATO:,TRIESTE,Indirizzo legale:,VIA REVOLTELLA 39 34139 
Trieste (Trieste) ,Mob.:,3484503368,Fax:,Sito web:,www.csentrieste.it/} 

das Problem ist auch, dass einige Attribut Zeichenfolge mit i cant fehlen werden kann, so spaltete sich die:

COMITATO: TRIESTE Indirizzo legale: VIA REVOLTELLA 39 34139 
Trieste (Trieste) Mob.: 3484503368 Fax: 040310096 Sito web: www.csentrieste.it/ 

das gewünschte Ergebnis ein Array wie sein müssen Header-Attribut wie "COMITATO:" oder "Indirizzo Legale:"

Beispiel: wenn "Indirizzo legale:" seine fehlende Zeichenfolge erscheint wie:

COMITATO: TRIESTE Mob.: 3484503368 Fax: 040310096 Sito web: www.csentrieste.it/ 
+0

erstes Split durch einen Raum, der durch das von 'gefolgt Wort gefolgt:' spaltete dann jeweils durch einen Raum, Grenze zu 2 Einstelloptionen. Was hast du bisher versucht? –

+0

kann das Wort für Split nicht verwenden, weil es möglich ist, dass sich einige Wörter ändern und nicht vorhanden sind. –

+0

Ich meine nicht * bestimmtes Wort *, aber * irgendein Wort *. Kennen Sie [Lookaheads] (http://www.regular-expressions.info/lookaround.html)? Sie können in 'String # split()' auch verwendet werden –

Antwort

1

Nun wird diese regex Ihre Eingaben gegeben analysieren:

(?<firstname>.*?):\s*(?<lastname>\w+)(?:(?<occupation>[^:]+):\s*(?<address>.+\n.+))?\sMob.:\s*(?<mobile>\d+)\s*Fax:\s*(?<fax>\d+)\s*Sito web:\s*(?<website>.*) 

Wir können mit benannten Gruppen einige Lesbarkeit und einfachen Zugang der Ergebnisse retten. Nichts zu schlaues an der Regex, wir kriechen nur durch die Zeichenkette und verwenden dabei die statische Struktur, um das Muster zu verankern: die Doppelpunkte, "Mob", "Fax" und "Sito-Web". Offensichtlich ist der "vielleicht fehlende" Adressteil optional.

regex demo here

Verwandte Themen