# Pattern



## newb86 (2. Dez 2009)

Hallo,

bekomme das Pattern für folgendes Beispiel nicht hin:

String der geparst werden soll: Hans Richt von der Lünz
von oder der sind optional, sprich eins kann mal entfallen

Der Pattern soll schauen, ob hintereinander folgende Wörter und deren Anfangsbuchstaben grossegeschrieben sind. Wenn ja soll der wie z.B. in dem Beispiel Hans Richt zu einer Gruppe zusammenfassen. Folgt ein Wort, dessen Anfangsbuchstabe klein geschrieben ist, so wird der Rest in eine zweite Gruppe gesetzt (hier: von der Lünz)

also: Gruppe 1: Hans Richt
Gruppe: von der Lünz


----------



## Marco13 (6. Dez 2009)

Hat es einen bestimmten Grund, warum das mit RegEx gemacht werden soll? Mit einem StringTokenizer und ein bißchen String#indexOf und String#substring ist das ja in wenigen Minuten und wenigen Zeilen hingeschrieben....


----------



## faetzminator (6. Dez 2009)

1. die Logik von dir macht IMHO nicht viel Sinn - oder ich hab sie nicht verstanden. Wenn du alle Werte kombinieren willst, welche nicht mit einem Grossbuchstaben kannst du das so machen:

```
Pattern pattern = Pattern.compile("([^\\sA-Z]+\\s+)*[A-Z][^\\s]*");
Matcher matcher = pattern.matcher("Hans Richt von der Lünz");
while (matcher.find()) {
	System.out.println(matcher.group());
}
```
Gibt allerdings folgendes aus:

```
Hans
Richt
von der Lünz
```
2. Die Problematik hier sind die Umlaute, mein Regex funktioniert allerdings so lange du als ersten Grossbuchstabe kein Umlaut verwendest.


----------

