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…)
(或者,另外,