Как получить последние слова в абзаце в Python, используя регулярные выражения - PullRequest
1 голос
/ 28 июня 2019

Я ищу способ извлечь последнее слово в строке.Я только хочу извлечь Имя: Майк Мой код

import re

text_to_search = '''
I like Apples and bananas 
I like fruits and yogurt
thisUser: Your name : Mike Lewis
Email: mike@mail.com
type: Fullresopnse
'''
pattern = re.compile(r'thisUser: Your name :\s[A-Z]\w+')

matches = pattern.search(text_to_search)

print(matches)

, и запуск этого кода заставляет меня:

re.Match object; span=(54, 80), match='thisUser: Your name : Mike'

Как мне получить только "Mike" или "Mike lewis"Распечатать?

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Это выражение имеет группу захвата, которая возвращает Mike:

thisUser:\s*Your name\s*:\s*(\S+)

Демо

Test

import re

regex = r"thisUser:\s*Your name\s*:\s*(\S+)"

test_str = ("I like Apples and bananas \n"
    "I like fruits and yogurt\n"
    "thisUser: Your name : Mike Lewis\n"
    "Email: mike@mail.com\n"
    "type: Fullresopnse")

matches = re.finditer(regex, test_str, re.MULTILINE)

for matchNum, match in enumerate(matches, start=1):

    print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))

    for groupNum in range(0, len(match.groups())):
        groupNum = groupNum + 1

        print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
1 голос
/ 28 июня 2019

Вы можете попробовать использовать re.findall здесь:

matches = re.findall(r'\bYour name\s*:\s*(\S+)\s+(\S+)', text_to_search)
print("first name: " + matches[0][0])
print("last name: " + matches[0][1])

Это печатает:

first name: Mike
last name: Lewis

Здесь потенциальное преимущество re.findall может быть, если вы ожидаете, что в вашем тексте будет более одной записи имени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...