Python 这个正则表达式有什么问题?

Python 这个正则表达式有什么问题?,python,django,unit-testing,Python,Django,Unit Testing,我正在尝试创建一个测试,以验证链接是否呈现在网页上 我不明白我在这个断言测试中做错了什么: self.assertRegexpMatches( response.content, r'<a href="/questions/?sort=elite" class="on" title="Staff Selected Questions">elite</a>') self.assertRegexpMatches(response.content,r'') 我知道标记在页面

我正在尝试创建一个测试,以验证链接是否呈现在网页上

我不明白我在这个断言测试中做错了什么:

self.assertRegexpMatches( response.content, r'<a href="/questions/?sort=elite" class="on" title="Staff Selected Questions">elite</a>')
self.assertRegexpMatches(response.content,r'')
我知道标记在页面上,因为我是从response.content复制的

我尝试在Python shell中使用正则表达式:

In [27]: links = """<div class="tabsA"><a href="/questions/?sort=active" title="Most recently updated questions">active</a><a href="/questions/?sort=newest" title="most recently asked questions">newest</a><a href="/questions/?sort=hottest" title="most active questions in the last 24 hours">hottest</a><a href="/questions/?sort=mostvoted" title="most voted questions">most voted</a><a href="/questions/?sort=elite" class="on" title="Staff Selected Questions">elite</a></div>"""

In [28]: re.search(r'<a href="/questions/?sort=elite" class="on" title="Staff Selected Questions">elite</a>', links)
[27]中的
:链接=“”
在[28]中:重新搜索(r'',链接)
出于某种原因,这也不起作用


如何创建正则表达式使其工作?

?字符是一个特殊的正则表达式字符,必须转义

下面的regexp将起作用

<a href="/questions/\?sort=elite" class="on" title="Staff Selected Questions">elite</a>

请注意\之前的

在这里可以找到一个处理正则表达式的好工具:


它可以为您节省大量时间和麻烦…

正则表达式中的
被解释为(本部分结束):

您应该转义“
”,因为该符号在正则表达式上有特殊含义

>>> re.search(r'<a href="/questions/\?sort=elite" class="on" title="Staff Selected Questions">elite</a>', links)
>重新搜索(r'',链接)
可能是“”字符。在某些正则表达式语法中,它们是表示行的开始和结束的特殊字符


您可以查看一个工具来帮助您学习它们。

为什么在这里使用正则表达式?绝对没有理由这么做。你只是在匹配一个简单的字符串。使用:

self.assertContains(response, '<a href="/questions/?sort=elite" class="on" title="Staff Selected Questions">elite</a>')
self.assertContains(响应“”)

你必须避开问号。因此,它的re.search(r'somestuff\?somemorestuff')开玩笑地回答:它的问题在于您试图使用正则表达式来解析标记。;-)就个人而言,我更喜欢expresso
在Python中没有特殊意义,除非它们用于命名的捕获组
(?P…)
(或者,另外,