Как исправить эту проблему с регулярным выражением? - PullRequest
1 голос
/ 08 ноября 2019

Рассмотрим программу на Python, приведенную ниже.

import re
  words = input("Say something!\n")
  p = re.compile("my name is (.*)", re.IGNORECASE)
  matches = p.search(words)
  if matches:
    print(f"Hey, {matches[1]}.")
  else:
    print("Hey, you.")

При таком вводе, как «Меня зовут Эрл», эта программа вежливо выводит «Эй, Эрл». Принимая во внимание такие данные, как «Меня зовут Эрл Хики», эта программа выводит «Эй, Эрл Хики», что выглядит немного формально. Предложите, как изменить аргумент для re.compile таким образом (без жесткого кодирования Earl), чтобы эта программа вместо этого выводила Hey, Earl в обоих случаях.

1 Ответ

1 голос
/ 08 ноября 2019

Вы можете использовать r"my name is (\w+)". \w+ ограничивает группу захвата последовательностью символов слова, поэтому мы примем , что все до конца слова является первым именем.

import re

words = input("Say something!\n")
matches = re.search(r"my name is (\w+)", words, re.I)

if matches:
    print(f"Hey, {matches[1]}.")
else:
    print("Hey, you.")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...