{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6dfd0e7a-d8ab-4993-8d8f-6e613f591d77",
   "metadata": {},
   "outputs": [],
   "source": [
    "import re"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5d77a3a7-2404-4c3e-8f24-5149d8177208",
   "metadata": {},
   "outputs": [],
   "source": [
    "#first last\n",
    "def analyze_name(name):\n",
    "    pattern = '(\\w+)\\s+(\\w+)';\n",
    "    names = re.search(pattern, name)\n",
    "\n",
    "    return names.groups()\n",
    "    #return names.group(1), names.group(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "286aa62d-e29b-43ba-8540-28f7f96101ed",
   "metadata": {},
   "outputs": [],
   "source": [
    "analyze_name('John Jones')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f422743a-f39d-418d-a73d-de23202c1438",
   "metadata": {},
   "outputs": [],
   "source": [
    "first, last = analyze_name('John Jones')\n",
    "\n",
    "print(f'{first = :s}')\n",
    "print(f'{ last = :s}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "71a710bc-366c-4081-95ac-29f8eee039d7",
   "metadata": {},
   "outputs": [],
   "source": [
    "#first <sp>middle last\n",
    "def analyze_name(name):\n",
    "    pattern = '(\\w+)(\\s+\\w+)?\\s(\\w+)';\n",
    "    names = re.search(pattern, name)\n",
    "\n",
    "    return names.group(1), names.group(2), names.group(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "91468628-274f-4363-8bb9-ccb1ffbb243e",
   "metadata": {},
   "outputs": [],
   "source": [
    "first, middle, last = analyze_name('John Paul Jones')\n",
    "\n",
    "print(f'{ first = :s}')\n",
    "if middle != None: print(f'{middle = :s}')\n",
    "print(f'{  last = :s}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "94c6fd5e-28e5-4e78-a494-c97cbad381ae",
   "metadata": {},
   "outputs": [],
   "source": [
    "#first middle last\n",
    "def analyze_name(name):\n",
    "    pattern = '(\\w+)(\\s+(\\w+))?\\s(\\w+)';\n",
    "    names = re.search(pattern, name)\n",
    "\n",
    "    return names.groups()\n",
    "    #return names.group(1), names.group(3), names.group(4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a6499cc5-df7c-4854-8ed5-1f105dd8babf",
   "metadata": {},
   "outputs": [],
   "source": [
    "analyze_name('John Paul Jones')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "135ec15a-e627-495c-8b69-bc10a26071f2",
   "metadata": {},
   "outputs": [],
   "source": [
    "first, middle, last = analyze_name('John Paul Jones')\n",
    "\n",
    "print(f'{ first = :s}')\n",
    "if middle != None: print(f'{middle = :s}')\n",
    "print(f'{  last = :s}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7aef1b9d-9c1c-485f-adee-7a27ee9fb783",
   "metadata": {},
   "outputs": [],
   "source": [
    "first, middle, last = analyze_name('John Q. Jones')\n",
    "\n",
    "print(f'{ first = :s}')\n",
    "if middle != None: print(f'{middle = :s}')\n",
    "print(f'{  last = :s}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9f4c057f-9918-45b7-bfec-5d637224edc4",
   "metadata": {},
   "outputs": [],
   "source": [
    "#first middle. last\n",
    "def analyze_name(name):\n",
    "    pattern = '(\\w+)(\\s+(\\w+\\.))?\\s(\\w+)';\n",
    "    names = re.search(pattern, name)\n",
    "\n",
    "    return names.group(1), names.group(3), names.group(4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "80303ef2-17d0-440d-a7e4-392a786a7a3e",
   "metadata": {},
   "outputs": [],
   "source": [
    "first, middle, last = analyze_name('John Q. Jones')\n",
    "\n",
    "print(f'{ first = :s}')\n",
    "if middle != None: print(f'{middle = :s}')\n",
    "print(f'{  last = :s}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c2f841ff-7cb0-4d46-b004-70cc03371b2c",
   "metadata": {},
   "outputs": [],
   "source": [
    "first, middle, last = analyze_name('John Q. Jones, Jr.')\n",
    "\n",
    "print(f'{ first = :s}')\n",
    "if middle != None: print(f'{middle = :s}')\n",
    "print(f'{  last = :s}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ec4d6a5e-7c80-4f91-afeb-0f47a79bb251",
   "metadata": {},
   "outputs": [],
   "source": [
    "#first middle. last, <sp>suffix.\n",
    "def analyze_name(name):\n",
    "    pattern = '(\\w+)(\\s+(\\w+\\.?))?\\s(\\w+)(,\\s+\\w+\\.)?';\n",
    "    names = re.search(pattern, name)\n",
    "\n",
    "    return names.group(1), names.group(3), names.group(4), names.group(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bbd90ed0-7e03-4e1c-b6d5-573b8523fbab",
   "metadata": {},
   "outputs": [],
   "source": [
    "first, middle, last, suffix = analyze_name('John Q. Jones, Jr.')\n",
    "\n",
    "print(f'{ first = :s}')\n",
    "if middle != None: print(f'{middle = :s}')\n",
    "print(f'{  last = :s}')\n",
    "if suffix != None: print(f'{suffix = :s}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1e9b5065-5023-489f-9084-cd40b8506509",
   "metadata": {},
   "outputs": [],
   "source": [
    "#first middle. last, <sp>suffix.\n",
    "def analyze_name(name):\n",
    "    pattern = '(\\w+)(\\s+(\\w+\\.?))?\\s(\\w+)(,\\s+(\\w+\\.?))?';\n",
    "    names = re.search(pattern, name)\n",
    "\n",
    "    return names.groups()\n",
    "    #return names.group(1), names.group(3), names.group(4), names.group(6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "04ed0e69-89aa-46ff-8ce1-4aa3a7acb5af",
   "metadata": {},
   "outputs": [],
   "source": [
    "analyze_name('John Q. Jones, Jr.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b80147e0-2952-4c0a-bc93-f9187605a09f",
   "metadata": {},
   "outputs": [],
   "source": [
    "first, middle, last, suffix = analyze_name('John Q. Jones, Jr.')\n",
    "\n",
    "print(f'{ first = :s}')\n",
    "if middle != None: print(f'{middle = :s}')\n",
    "print(f'{  last = :s}')\n",
    "if suffix != None: print(f'{suffix = :s}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "db9e0a35-c1c2-4612-b471-1e04a10be4b8",
   "metadata": {},
   "outputs": [],
   "source": [
    "first, middle, last, suffix = analyze_name('John Jones')\n",
    "\n",
    "print(f'{ first = :s}')\n",
    "if middle != None: print(f'{middle = :s}')\n",
    "print(f'{  last = :s}')\n",
    "if suffix != None: print(f'{suffix = :s}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5afdf49e-5ade-4184-8f52-72b673879661",
   "metadata": {},
   "outputs": [],
   "source": [
    "first, middle, last, suffix = analyze_name('John Q. Jones')\n",
    "\n",
    "print(f'{ first = :s}')\n",
    "if middle != None: print(f'{middle = :s}')\n",
    "print(f'{  last = :s}')\n",
    "if suffix != None: print(f'{suffix = :s}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5cea073e-7af2-49c8-893e-6486198852e0",
   "metadata": {},
   "outputs": [],
   "source": [
    "first, middle, last, suffix = analyze_name('Dr. John Q. Jones, III')\n",
    "\n",
    "print(f'{ first = :s}')\n",
    "if middle != None: print(f'{middle = :s}')\n",
    "print(f'{  last = :s}')\n",
    "if suffix != None: print(f'{suffix = :s}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b27871ba-8d88-473c-b4d3-524aa9205070",
   "metadata": {},
   "outputs": [],
   "source": [
    "#title. first middle. last, suffix\n",
    "def analyze_name(name):\n",
    "    pattern = '((\\w+\\.)\\s+)?(\\w+)(\\s+(\\w+\\.?))?\\s(\\w+)(,\\s+(\\w+\\.?))?';\n",
    "    names = re.search(pattern, name)\n",
    "\n",
    "    return names.groups()\n",
    "    #return names.group(2), names.group(3), names.group(5), names.group(6), names.group(8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e36c4bcb-1304-44fb-af4e-8e0804c745a5",
   "metadata": {},
   "outputs": [],
   "source": [
    "analyze_name('Dr. John Q. Jones, III')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6db01771-b9d6-4f0a-82ad-6775dbfc6449",
   "metadata": {},
   "outputs": [],
   "source": [
    "analyze_name('Dr. John Q. Jones, Jr.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6dcc8b3d-4d77-40a6-84ba-1443e9d5ae46",
   "metadata": {},
   "outputs": [],
   "source": [
    "title, first, middle, last, suffix = analyze_name('Dr. John Q. Jones, Jr.')\n",
    "\n",
    "if title != None: print(f'{ title = :s}')\n",
    "print(f'{ first = :s}')\n",
    "if middle != None: print(f'{middle = :s}')\n",
    "print(f'{  last = :s}')\n",
    "if suffix != None: print(f'{suffix = :s}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2107bb17-aee3-44d3-9edd-5ec3a76629e7",
   "metadata": {},
   "outputs": [],
   "source": [
    "title, first, middle, last, suffix = analyze_name('John Jones')\n",
    "\n",
    "if title != None: print(f'{ title = :s}')\n",
    "print(f'{ first = :s}')\n",
    "if middle != None: print(f'{middle = :s}')\n",
    "print(f'{  last = :s}')\n",
    "if suffix != None: print(f'{suffix = :s}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dc0896e6-40be-47bf-81cd-dfe5c184339f",
   "metadata": {},
   "outputs": [],
   "source": [
    "title, first, middle, last, suffix = analyze_name('John Q. Jones')\n",
    "\n",
    "if title != None: print(f'{ title = :s}')\n",
    "print(f'{ first = :s}')\n",
    "if middle != None: print(f'{middle = :s}')\n",
    "print(f'{  last = :s}')\n",
    "if suffix != None: print(f'{suffix = :s}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5b66ba02-51ee-4f95-9e4f-b164fec3e409",
   "metadata": {},
   "outputs": [],
   "source": [
    "title, first, middle, last, suffix = analyze_name('John Q. Jones, Sr.')\n",
    "\n",
    "if title != None: print(f'{ title = :s}')\n",
    "print(f'{ first = :s}')\n",
    "if middle != None: print(f'{middle = :s}')\n",
    "print(f'{  last = :s}')\n",
    "if suffix != None: print(f'{suffix = :s}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ceba4ce5-e418-4320-96e9-1339b1d31b29",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
