我正在尝试获取响应文本的内容,即日期。但是,如果除日期外还有其他内容,则不应获取内容。有人可以帮我吗.. 我当前的正则表达式是:“续订/到期日期:[^ \ d] (([\ d /] )'
password
问题是xml是否看起来像这样
<div class="textbkStyle">Renewal/Expiration Date:
<div class="responseText">
01/01/2019
</div>
</div>
它会跳过不可用的文本,并在页面中获取与格式匹配的另一个连续日期。另外,我们还建议您提供一些有关使正则表达式更好的资源的建议。
答案 0 :(得分:1)
正则表达式不是最好的工具。我会使用html解析器。示例BeautifulSoup:pip install beautifulsoup4
然后做
from bs4 import BeautifulSoup
raw_1 = '''
<div class="textbkStyle">Renewal/Expiration Date:
<div class="responseText">
01/01/2019
</div>
</div>
'''
raw_2 = '''
div class="textbkStyle">Renewal/Expiration Date:
<div class="responseText">
NOT AVAILABLE
</div>
</div>
'''
soup = BeautifulSoup(raw_1, 'html.parser')
print(soup.find('div',{'class':'responseText'}).getText(strip=True))
soup_2 = BeautifulSoup(raw_2, 'html.parser')
print(soup_2.find('div',{'class':'responseText'}).getText(strip=True))
或功能:
def get_response_text(raw):
soup = BeautifulSoup(raw, 'html.parser')
tag = soup.find('div',{'class':'responseText'})
return tag.getText(strip=True)
print(get_response_text(raw_1))
print(get_response_text(raw_2))
答案 1 :(得分:0)
尽管您不应该这样做,但是可以按照以下步骤操作:
<div class=\"textbkStyle\">Renewal/Expiration Date:\s*<div class=\"responseText\">\s*(\d{2}/\d{2}/\d{4})\s*</div>\s*</div>
您的日期将显示在\1