File size: 609 Bytes
b02630d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import re


class NameTool:
    """Extract user names from natural language messages."""

    def extract_name(self, text: str):
        """
        Extract name from sentences like:
        - i am naveen
        - I'm Naveen
        - my name is naveen
        """
        text = text.lower()

        patterns = [
            r"i am ([a-zA-Z]+)",
            r"i'm ([a-zA-Z]+)",
            r"my name is ([a-zA-Z]+)"
        ]

        for p in patterns:
            m = re.search(p, text)
            if m:
                name = m.group(1).strip().title()
                return name

        return None