Ik heb een stuk tekst en daaruit wil ik namen filteren. Stukje voorbeeld tekst:
Nu heb ik de volgende regular expression:
Dit geeft:
Op zich al vrij netjes. Alleen mis ik PSG, Eredivisie, Atalia, Longa en de tweede keer Freriks.
Het mooiste zou zijn om deze output te krijgen:
- Suzanne Freriks
- Spanje
- Bargas Atalia PSG
- Plantina Longa
- Nederlandse Eredivisie
- Freriks
Dus: alle woorden die beginnen met een hoofdletter die niet aan het begin staan van een zin en het liefst gecombineerd in plaats van los.
Ik snap dat er wat problemen mee zijn voor wat betreft een aantal gevallen:
- Jan de Vries (=> geeft Jan en Vries los..)
- Aan het begin van de zin een naam is ook een probleem
- en nog een paar...
Wat is nu een regexp dat mij een vrij goeie output geeft?
code:
1
| Volleybalinternational Suzanne Freriks speelt komend seizoen in Spanje. De 23-jarige Freriks heeft een contract voor 1 jaar getekend bij promovendus Bargas Atalia PSG. De 1.78 meter lange spelverdeelster speelde afgelopen seizoen voor Plantina Longa in de Nederlandse Eredivisie. |
Nu heb ik de volgende regular expression:
PHP:
1
| preg_match_all ('/[^.] ([A-Z]+[a-z]+)/', $lorem, $m); |
Dit geeft:
code:
1
| Array ( [0] => Suzanne [1] => Spanje [2] => Freriks [3] => Bargas [4] => Plantina [5] => Nederlandse ) |
Op zich al vrij netjes. Alleen mis ik PSG, Eredivisie, Atalia, Longa en de tweede keer Freriks.
Het mooiste zou zijn om deze output te krijgen:
- Suzanne Freriks
- Spanje
- Bargas Atalia PSG
- Plantina Longa
- Nederlandse Eredivisie
- Freriks
Dus: alle woorden die beginnen met een hoofdletter die niet aan het begin staan van een zin en het liefst gecombineerd in plaats van los.
Ik snap dat er wat problemen mee zijn voor wat betreft een aantal gevallen:
- Jan de Vries (=> geeft Jan en Vries los..)
- Aan het begin van de zin een naam is ook een probleem
- en nog een paar...
Wat is nu een regexp dat mij een vrij goeie output geeft?