Как сопоставить конкретную строку в Python Regex? - PullRequest
0 голосов
/ 24 октября 2019

Мне нужно убрать символы из строки такого типа:

\xa0(Geändert am 01.Aug. 2013)
\xa0(Geändert am 05.Dez. 2014)

, чтобы оставить только: 01.Aug. 2013, 05.Dez. 2014

Итак, насколько я закончил: [(\xa0)(Geändert)(am)], ноон не работает должным образом

enter image description here

Ответы [ 3 ]

1 голос
/ 24 октября 2019

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

\d{2}\.\w{3}\.\s\d{4}
1 голос
/ 24 октября 2019

Если вы хотите добавить проверку в регулярное выражение и разобрать каждую часть даты в другую группу захвата, вы можете использовать следующее регулярное выражение:

(([\d]{2})\.((?:J[aä]n|Feb|Apr|Aug|Sept|Okt|Nov|Dez)\.|(?:M[aä]rz|Mai|Juni|Juli)) ?([\d]{4}))

Первая группа будет содержать полноедата и следующие три - отдельные части (день, месяц, год).

Пример:

import re

s = """\xa0(Geändert am 01.Aug. 2013)
\xa0(Geändert am 05.Dez. 2014)
\xa0(Geändert am 25.Juni 1995)
\xa0(Geändert am 11.März 2005)"""
pattern = r"(([\d]{2})\.((?:J[aä]n|Feb|Apr|Aug|Sept|Okt|Nov|Dez)\.|(?:M[aä]rz|Mai|Juni|Juli)) ?([\d]{4}))"

for match in re.finditer(pattern, s):
    print("Datum: {}, tag: {}, monat: {}, jahr: {}".format(*match.groups()))
1 голос
/ 24 октября 2019

Если формирование строки для частей, которые вы хотите удалить, исправлено, вам не нужно регулярное выражение. т.е. просто удалите первые N символов и последние 1, чтобы удалить ненужные части.

Если вы хотите избежать "магических чисел", тогда строка Python replace также хороша:

removeStart = data.replace('\xa0(Geändert am ', '')
removeEnd = removeStart.replace(')', '')

В случае неудачи, если попытаться использовать регулярное выражение в соответствии с теми частями, которые вы хотите сохранить (т. Е. Сопоставить с хорошими вещами, которые нужно сохранить, а не с плохими, чтобы удалить), не рекомендуется, поэтому напишите шаблон, соответствующий строке даты,Это означает, что если материал, который вас не волнует, изменится, код все равно будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...