#python #regex
#python #регулярное выражение
Вопрос:
Я ищу регулярное выражение для удаления всех точек через год в строке.
Я знаю, что для определения целевых лет и интервалов между годами я могу использовать
s*d{4}(?:s*-s*d{4})?
Но как мне захватить только точку?
Например, если у меня есть «ABCD 2009. DEF»Я хочу получить «ABCD 2009 DEF»
Ответ №1:
Вы можете обернуть имеющийся у вас шаблон группой захвата и добавить .
после него (чтобы сопоставить одну или несколько точек) и заменить на 1
(чтобы вернуть год в результирующую строку):
re.sub(r'(s*d{4}(?:s*-s*d{4})?). ', r'1', s)
Смотрите демонстрацию регулярных выражений.
Ответ №2:
Вы можете использовать положительный просмотр с нулевой шириной назад ( (?<=bd{4})
), чтобы убедиться, что .
тому, что вы хотите заменить, предшествуют четыре цифры:
In [1820]: str_ = 'ABCD 2009. DEF'
In [1821]: re.sub(r'(?<=bd{4}).', '', str_)
Out[1821]: 'ABCD 2009 DEF'
In [1822]: str_ = 'ABCD 2009. DEF 2019. FOO'
In [1823]: re.sub(r'(?<=bd{4}).', '', str_)
Out[1823]: 'ABCD 2009 DEF 2019 FOO'