Python: регулярное выражение для извлечения всех предложений, начинающихся и заканчивающихся одним и тем же словом - PullRequest
0 голосов
/ 20 февраля 2020

Учитывая строку предложений, мне нужно извлечь список всех предложений, которые начинаются и заканчиваются одним и тем же словом.

например,

# sample text
text = "This is a sample sentence. well, I'll check that things are going well. another sentence starting with another. ..."

# required result
[
 "well, I'll check that things are going well",
 "another sentence starting with another"
]

Как я могу сделать совпадение, используя обратные ссылки, а также захватить полное предложение?

Я пробовал следующее регулярное выражение, но оно не работает.

re.findall( "^[a-zA-Z](.*[a-zA-Z])?$" , text  )

Ответы [ 2 ]

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

Вы можете попробовать использовать обратную ссылку для повторного использования совпадения ...

import re

# sample text
text = "This is a sample sentence. Well, I'll check that things are going well. another sentence starting with another. ..."

print([match[0] for match in re.findall(r"((\b\w+\b)[^.?!]+\2[.?!])", text, re.IGNORECASE)])

Это печатает ...

['Well, I'll check that things are going well.', 'another sentence starting with another.']

Примечание: я изменил случай первой "скважины "в" Хорошо "для целей тестирования.

0 голосов
/ 20 февраля 2020
text = "This is a sample sentence. going to checking whether it is well going. another 
sentence starting with another."

sentences = re.split('[.!?]+', text)
result = []

for s in sentences:
    words = s.split()
    if len(words) > 0 and words[0] == words[-1]:
        result.append(s.strip())

print(result)
...