Python Can';找不到合适的正则表达式来匹配以下内容:

Python Can';找不到合适的正则表达式来匹配以下内容:,python,regex,Python,Regex,我试图抓住回复文本的内容,即日期。但是,如果它不是一个日期,它不应该抓住内容。有人能帮我吗。。 我当前的正则表达式是:“续订/到期日期:[^\d]([\d/])” 续订/到期日期: 01/01/2019 问题是,如果xml看起来像这样 <div class="textbkStyle">Renewal/Expiration Date: <div class="responseText"> NOT AVAILABL

我试图抓住回复文本的内容,即日期。但是,如果它不是一个日期,它不应该抓住内容。有人能帮我吗。。 我当前的正则表达式是:“续订/到期日期:[^\d]([\d/])”

续订/到期日期:
01/01/2019
问题是,如果xml看起来像这样

    <div class="textbkStyle">Renewal/Expiration Date:
        <div class="responseText">


                NOT AVAILABLE

        </div>
    </div>
续订/到期日期:
无法使用的

它会去跳过不可用的文本,并在页面中获取与格式匹配的另一个连续日期。此外,我们也非常感谢您对资源的建议,以提高regex的水平。

尽管您不应该这样做,但以下是您可以做到的:

<div class=\"textbkStyle\">Renewal/Expiration Date:\s*<div class=\"responseText\">\s*(\d{2}/\d{2}/\d{4})\s*</div>\s*</div>
续订/到期日期:\s*\s*(\d{2}/\d{2}/\d{4})\s*\s*
您的日期将在
\1


正则表达式并不是最好的工具。我会使用html解析器。示例BeautifulSoup:
pip安装beautifulsoup4
并执行以下操作

从bs4导入美化组
原始_1=''
续期/到期日期:
01/01/2019
'''
原始_2=''
div class=“textbkStyle”>续约/到期日期:
无法使用的
'''
soup=BeautifulSoup(原始_1,'html.parser')
打印(soup.find('div',{'class':'responseText'}).getText(strip=True))
soup_2=beautifulsou(原始_2,'html.parser')
打印(soup_2.find('div',{'class':'responseText'}).getText(strip=True))
或函数:


def get_response_文本(原始):
soup=BeautifulSoup(原始的“html.parser”)
tag=soup.find('div',{'class':'responseText'})
return tag.getText(strip=True)
打印(获取响应文本(原始1))
打印(获取响应文本(原始2))

使用html语法我很困惑。。。如果已知正则表达式是一种不好的做法,那么为什么还要显示它呢?@EJoshuaS.com鉴于OP提供的数据子集有限,正则表达式是相当安全的。谢谢!你可能是对的。尽管它现在可以工作,但最好的办法是使用xml解析器,非常感谢!这肯定会帮助我理解并转而使用beautifulsoup!:)我发现它比正则表达式更可读,而且更容易修改,以便在HTMLDOM中查找内容;)是 啊对。大约一个小时以来,我一直在挠头。我正致力于在我的项目中实现这一点。
<div class=\"textbkStyle\">Renewal/Expiration Date:\s*<div class=\"responseText\">\s*(\d{2}/\d{2}/\d{4})\s*</div>\s*</div>