Как выбрать слова с апострофом с помощью регулярного выражения - PullRequest
1 голос
/ 18 февраля 2020

Я пытаюсь разделить строку в списке, но мне нужно, чтобы строка содержала слова, соединенные апострофами. Например:

String="My name is Melvin_JESUS, Guatemala, Dean'Olvier, 501soy...@ 1231 !"

должен дать мне результат как:

['my', 'name', 'is', 'melvin', 'jesus', 'guatemala', '"dean'oliver"', 'soy']

я пробовал следующее регулярное выражение:

my_patern= r"(?:^|(?<=\s)|-)[A-Za-z'\.]+(?=\s|\t|$|\b)"

, но не дает мне желаемых результатов.

1 Ответ

0 голосов
/ 18 февраля 2020

Вы можете использовать

(?<![^\W\d_])[^\W\d_]+(?:['.][^\W\d_]+)*(?![^\W\d_])

См. Демоверсию regex

Подробности

  • (?<![^\W\d_]) - нет букв прямо перед началом матча
  • [^\W\d_]+ - 1 или более букв
  • (?:['.][^\W\d_]+)* - 0 или более последовательностей ' или ., а затем 1+ букв
  • (?![^\W\d_]) - без букв сразу после матча.

В Python, используйте

re.findall(r'(?<![^\W\d_])[^\W\d_]+(?:['.][^\W\d_]+)*(?![^\W\d_])', text)
...