Clean Names and Emails in Google Sheets with REGEXEXTRACT and SPLIT
January 30th, 2026
Messy contact data is common. You might receive values like:
Alex Johnson <[email protected]>
This guide shows how to split the name and email into clean columns using REGEXEXTRACT and SPLIT.
Extract the email address
=REGEXEXTRACT(A2, "[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}")
- This pattern finds a standard email address inside the text.
- It ignores the name portion entirely.
If you need case-insensitive matching, wrap with UPPER on the input:
=REGEXEXTRACT(UPPER(A2), "[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}")
Extract the name
If the format is Name <email>, you can take everything before the angle bracket:
=TRIM(LEFT(A2, FIND("<", A2) - 1))
Split into two columns
If the name and email are separated by a space and angle bracket, SPLIT can do the job quickly:
=SPLIT(SUBSTITUTE(A2, "<", ""), ">", TRUE, TRUE)
This removes the opening bracket and splits on the closing bracket. You will get two columns: name and email.
Make it scalable with ARRAYFORMULA
For a full column:
=ARRAYFORMULA(IF(A2:A="", "", REGEXEXTRACT(UPPER(A2:A), "[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}")))
And for names:
=ARRAYFORMULA(IF(A2:A="", "", TRIM(LEFT(A2:A, FIND("<", A2:A) - 1))))