簡體   English   中英

如何匹配 Python 正則表達式中的特定字符串?

[英]How to match specific string in Python Regex?

我需要從這種類型的字符串中刪除字符:

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

僅保留: 01.Aug. 2013, 05.Dez. 2014 01.Aug. 2013, 05.Dez. 2014

到目前為止,我最終得到: [(\xa0)(Geändert)(am)] ,但它無法正常工作

在此處輸入圖像描述

如果要刪除的部分的字符串形成是固定的,則不需要正則表達式。 即只需刪除前 N 個字符和最后一個 1 以去除不需要的部分。

如果您想避免“幻數”,那么 Python 字符串replace也一樣好:

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

如果嘗試使用正則表達式匹配您想要保留的部分(即匹配要保留的好東西,而不是要刪除的壞東西)是一種很好的做法,那么編寫一個匹配日期字符串的模式。 這意味着,如果您不關心的內容發生變化,代碼仍然有效。

您可以使用:

\d{2}\.\w{3}\.\s\d{4}

如果您想在正則表達式中添加一些驗證並將日期的每個部分解析為不同的捕獲組,您可以使用下一個正則表達式:

(([\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()))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM