Я хочу написать RegEx для удаления эллипсов из большого текста.
Мне нужно найти серию из двух или более точек, возможно, с пробелами между ними, возможно, без. RegEx, который я использую, находит экземпляры точек остановки, которые я не хочу удалять, поэтому я хочу, чтобы часть шаблона RegEx отменяла шаблон, если за ним следует определенная строка.
использовал этот шаблон: re.compile(r'\.[ \.]*\.')
Проблема с этим заключается в том, что в тексте присутствуют некоторые законные сокращения, которые улавливаются этим.
Возьмите этот текст, например:
1. Here are ... some . . ellipses..
2. This. . .is ellipsis also.
3. Here is an abbreviation. .i.
В приведенном выше примере я хочу, чтобы мой шаблон находил только ...
, . .
, ..
и . . .
в строках 1 и 2. Я не хочу, чтобы он что-либо находилоднако в строке 3 он найдет . .
.
Я мог бы обновить RegEx, чтобы исключить шаблоны, если им предшествует или следует буква i
, например: re.compile(r'[^i]\.[ \.]*\.'[^i])
, но затемшаблон не найдет многоточие в строке 2.
В идеале я мог бы отрицать целую подстроку в шаблоне, чтобы он не думал, что . .
является многоточием, если за ним следуетi.
или ему предшествует .i
, однако я не смог найтилюбой способ сделать это. Возможно ли это?