Я ищу способ получить сгруппированные символы, которые re.sub () подставил из строки. Например, вот так:
#!/usr/bin/env python3
import re
sentence="This is whatever. Foo"
# remove punctuation mark
new_sentence = re.sub('([\.,:;])', '', sentence)
removed_punctuation_mark = ??????????????
print(removed_punctuation_mark)
... как получить удаленную точку? Существует функция re.subn (), которая показывает только, что один символ был удален, но не какой.
Или, чтобы объяснить это по-другому, выполните в python то, что делает этот скрипт perl:
#!/usr/bin/perl
$sentence = "This is whatever. Foo";
# remove punctuation mark
$sentence =~ s/([\.,:;])//;
# first group of () in regex above
$removed_punctuation_mark = $1;
print "$removed_punctuation_mark\n";
Конечно, я мог бы сначала использовать re.search и group (), а затем re.sub, но мне пришлось бы повторить регулярное выражение, не очень элегантно.