2017-03-23 5 views
-1

Mit dem folgenden Dataset versuche ich, Regex zu verwenden, um Stadtnamen zu extrahieren.Java - Verwenden von Regex zum Extrahieren von Teilstrings aus dem Dataset

Boston (MA), New York (NY, CT, NJ)

New York (NY, CT, NJ), Philadelphia (PA, NJ)

Indianapolis (IN) , St. Louis (MO, IL)

St. Louis (MO, IL), Kansas City (MO, KS)

ich möchte die Ausgabe des Regex sein:

Boston, New York City

New York City, Philadelphia

Indianapolis, St. Louis

St. Louis, Kansas City

Ich versuchte Match Muster basiert auf zwei Kriterien:

(\\w+\\w(?=.())) | (\\w+\\W\\h\\w+(?=.()))

  1. Städte aus Buchstaben von [a-zA-Z]+ wie Boston oder Philadelphia
  2. Ein Wort bestehend aus zusätzlichen Zeichen wie z. B. Punkte/zusätzliche Leerzeichen.

Der Ausdruck stimmt genau mit dem ersten Fall überein. Für den zweiten Fall stimmt es jedoch nur mit dem ersten Auftreten von St. Louis überein.

Ich habe auch versucht die folgenden:

(\\w+ ?\\w(?=.())) | (\\w+\\h\\w+\\h\\w+(?=\\s.()))| (\\w+\\h\\w+(?=\\s.()))

  1. Das erste deckt den gleichen Fall wie oben aufgeführt - bestehend aus einem Wort bestehenden Städten.
  2. Die dritte schafft es, den Fall von New York City zu decken, jedoch, genau wie die erste, Fälle von dem gleichen Muster danach nicht erkennen.
  3. Und der gleiche Fall wie im letzten Muster, die St. Louis übereinstimmte nicht übereinstimmen, und abgestimmt Kansas City statt.
+0

sollte es 'NC, GA' sein? (kein Leerzeichen) – meatspace

+0

In welcher Sprache/Umgebung? – revo

+0

Bitte teilen Sie Ihre Versuche. Außerdem wäre es gut zu wissen, mit welcher Programmiersprache/welchem ​​Werkzeug Sie die Regex verwenden möchten. –

Antwort

0

Dies kann für .Net Benutzer sein

(((?<=\())\w{2})|(\w{2}(?=\)))|(\w{2}(?=,)) 
Verwandte Themen