找不到与以下内容匹配的适当正则表达式:

2024-10-03 00:26:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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


                01/01/2019

        </div>
    </div>

问题是如果xml看起来像这样

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


                NOT AVAILABLE

        </div>
    </div>

它将跳转不可用的文本,并获取页面中与格式匹配的另一个连续日期。此外,建议资源,以更好地在正则表达式也表示感谢。你知道吗


Tags: 文本div内容date格式not页面xml
2条回答

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

<div class=\"textbkStyle\">Renewal/Expiration Date:\s*<div class=\"responseText\">\s*(\d{2}/\d{2}/\d{4})\s*</div>\s*</div>

您的日期将在\1

https://regex101.com/r/7Yn7zk/1

Regex不是最好的工具。我会使用html解析器。示例BeautifulSoup:pip install beautifulsoup4和do

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))

相关问题 更多 >