找不到适合以下条件的正则表达式:

时间:2019-11-04 17:36:59

标签: python regex

我正在尝试获取响应文本的内容,即日期。但是,如果除日期外还有其他内容,则不应获取内容。有人可以帮我吗.. 我当前的正则表达式是:“续订/到期日期:[^ \ d] (([\ d /] )'

password

问题是xml是否看起来像这样

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


                01/01/2019

        </div>
    </div>

它会跳过不可用的文本,并在页面中获取与格式匹配的另一个连续日期。另外,我们还建议您提供一些有关使正则表达式更好的资源的建议。

2 个答案:

答案 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

said