Skip to content

Instantly share code, notes, and snippets.

@igitur
Last active March 3, 2024 17:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save igitur/5ca59a2d920d2633c8f8d375e59667ff to your computer and use it in GitHub Desktop.
Save igitur/5ca59a2d920d2633c8f8d375e59667ff to your computer and use it in GitHub Desktop.
Regular expressions to parse South African full names into first names and last name

Regular expressions to parse full names

Given a set of full names (multiple first names and last name/surname combined), these regular expressions can be used to split up the string into first names and a single last name/surname. This takes into account some common Afrikaans surnames with muliple parts (e.g. van der Merwe). These regular expressions are not perfect and cannot cover all cases. Adapt it for your needs. Use the capture groups to retrieve the first names and surname.

Format: First names Surname

([\w-]+(?: +(?!(?:Le +\w+)|(?:D[eou] +\w+)|(?:(?:Janse +)?V[ao]n +(?:Der +)?\w+))[\w-]+)*) +((?:[\w-]+ )*[\w-]+)

Examples

Input Output first name(s) Output surname
Sibusiso Madikizela Sibusiso Madikizela
Chrisna Le Roux Chrisna Le Roux
Kyle Bucklow Kyle Bucklow
Petrus Van Rooyen Petrus Van Rooyen
Carissa Van Aarde Carissa Van Aarde
Anine De Wet Anine De Wet
Riaan De Jager Riaan De Jager
Andre De Swardt Andre De Swardt
Jason Von Der Fecht Jason Von Der Fecht
Danie De Villiers Danie De Villiers
Samuel Van Bunningen Samuel Van Bunningen
Chante Van Tonder Chante Van Tonder
Jose De Oliveira Jose De Oliveira
Michelle Van Der Watt Michelle Van Der Watt
Sven Van Bommel Sven Van Bommel
Le Roi Van Niekerk Le Roi Van Niekerk
Elizabeth Do Rego Elizabeth Do Rego
Alten Du Plessis Alten Du Plessis
Andre Van Der Merwe Andre Van Der Merwe
Adele Van Aswegen Adele Van Aswegen
Brian Van Wyk Brian Van Wyk
Elizabeth Van Straaten Elizabeth Van Straaten
Anna Van Zyl Anna Van Zyl
Liezl Van Der Linde Liezl Van Der Linde
Danie Van Der Merwe Danie Van Der Merwe
Mari Van Lill Mari Van Lill
Nicolette Van Rooyen Nicolette Van Rooyen
Nic Van Aarde Nic Van Aarde
Aimee Van Gensen Aimee Van Gensen
Alain Van Gensen Alain Van Gensen
Alec Van Niekerk Alec Van Niekerk
Louise Van Zyl Louise Van Zyl
Wikus Van Biljon Wikus Van Biljon
Astrid De Castro Astrid De Castro
Andre Van Der Walt Andre Van Der Walt
Chrisna Le Roux Chrisna Le Roux
Francois Du Toit Francois Du Toit
Louis Du Plessis Louis Du Plessis
Renee De Waal Renee De Waal
Marius De Nysschen Marius De Nysschen
Tina Van Zyl Tina Van Zyl
Lucien De Voux Lucien De Voux
Annelize Van Niekerk Annelize Van Niekerk
Martinus Van Der Berg Martinus Van Der Berg
Derik Le Grange Derik Le Grange
Keshia De Gouveia Keshia De Gouveia
Noel Van Zyl Noel Van Zyl
Inus Van Wyk Inus Van Wyk
Elba Van Zyl Elba Van Zyl
Gerrit Van Zyl Gerrit Van Zyl
Paula Van Der Merwe Paula Van Der Merwe
Wim De Bruyne Wim De Bruyne
Renche Van Aarde Renche Van Aarde
Wichardt Von Molendorff Wichardt Von Molendorff
Jana De Wet Jana De Wet
Marius Du Toit Marius Du Toit
Duane De Villiers Duane De Villiers
Petra Van Vuuren Petra Van Vuuren
Abigail Janse Van Rensburg Abigail Janse Van Rensburg
Rishaad Ismail Vally Rishaad Ismail Vally
Johnny Hjr Wessels Johnny Hjr Wessels
Le Roi Van Niekerk Le Roi Van Niekerk
James Enver Pockpas James Enver Pockpas
Caitlin Christine Moir Caitlin Christine Moir
Iain Anthony Power Iain Anthony Power

Format: Surname First names

((?:Le +\w+)|(?:D[eou] +\w+)|(?:(?:Janse +)?V[ao]n +(?:Der +)?\w+)|(?:[\w-]+)) +((?:[\w-]+ )*[\w-]+)

Examples:

Input Output first name(s) Output surname
Madikizela Sibusiso Sibusiso Madikizela
Le Roux Chrisna Chrisna Le Roux
Bucklow Kyle Kyle Bucklow
Van Rooyen Petrus Petrus Van Rooyen
Van Aarde Carissa Carissa Van Aarde
De Wet Anine Anine De Wet
De Jager Riaan Riaan De Jager
De Swardt Andre Andre De Swardt
Von Der Fecht Jason Jason Von Der Fecht
De Villiers Danie Danie De Villiers
Van Bunningen Samuel Samuel Van Bunningen
Van Tonder Chante Chante Van Tonder
De Oliveira Jose Jose De Oliveira
Van Der Watt Michelle Michelle Van Der Watt
Van Bommel Sven Sven Van Bommel
Van Niekerk Le Roi Le Roi Van Niekerk
Do Rego Elizabeth Elizabeth Do Rego
Du Plessis Alten Alten Du Plessis
Van Der Merwe Andre Andre Van Der Merwe
Van Aswegen Adele Adele Van Aswegen
Van Wyk Brian Brian Van Wyk
Van Straaten Elizabeth Elizabeth Van Straaten
Van Zyl Anna-Marie Anna-Marie Van Zyl
Van Der Linde Liezl Liezl Van Der Linde
Van Der Merwe Danie Danie Van Der Merwe
Van Lill Mari Mari Van Lill
Van Rooyen Nicolette Nicolette Van Rooyen
Van Aarde Nic Nic Van Aarde
Van Gensen Aimee Aimee Van Gensen
Van Gensen Alain Alain Van Gensen
Van Niekerk Alec Alec Van Niekerk
Van Zyl Louise Louise Van Zyl
Van Biljon Wikus Wikus Van Biljon
De Castro Astrid Astrid De Castro
Van Der Walt Andre Andre Van Der Walt
Le Roux Chrisna Chrisna Le Roux
Du Toit Francois Francois Du Toit
Du Plessis Louis Louis Du Plessis
De Waal Renee Renee De Waal
De Nysschen Marius Marius De Nysschen
Van Zyl Tina Tina Van Zyl
De Voux Lucien Lucien De Voux
Van Niekerk Annelize Annelize Van Niekerk
Van Der Berg Martinus Martinus Van Der Berg
Le Grange Derik Derik Le Grange
De Gouveia Keshia Keshia De Gouveia
Van Zyl Noel Noel Van Zyl
Van Wyk Inus Inus Van Wyk
Van Zyl Elba Elba Van Zyl
Van Zyl Gerrit Gerrit Van Zyl
Van Der Merwe Paula Paula Van Der Merwe
De Bruyne Wim Wim De Bruyne
Van Aarde Renche Renche Van Aarde
Von Molendorff Wichardt Wichardt Von Molendorff
De Wet Jana Jana De Wet
Du Toit Marius Marius Du Toit
De Villiers Duane Duane De Villiers
Van Vuuren Petra Petra Van Vuuren
Janse Van Rensburg Abigail Abigail Janse Van Rensburg
Vally Rishaad Ismail Rishaad Ismail Vally
Wessels Johnny Hjr Johnny Hjr Wessels
Van Niekerk Le Roi Le Roi Van Niekerk
Pockpas James Enver James Enver Pockpas
Moir Caitlin Christine Caitlin Christine Moir
Power Iain Anthony Iain Anthony Power
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment