首页 > 解决方案 > Python RegEx Match 虽然匹配但不匹配

问题描述

我正在尝试提取子字符串(在本例中为“危险区案例”),但它返回错误:

>>> res = 'class=\\"market_listing_item_name\\" style=\\"color: #D2D2D2;\\">Danger Zone Case<\\/span>'
>>> item = re.search('market_listing_item_name\\.+?>(.+?)<', res).group(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'

虽然当我进入https://regexr.com/上的展位时,我得到了匹配。我究竟做错了什么?

标签: pythonregex

解决方案


中的反斜杠'market_listing_item_name\\.+?>(.+?)<'被视为特殊字符。要告诉 python 将它们视为文字字符,请使用原始字符串:r'market_listing_item_name\\.+?>(.+?)<'.

一个好的提示是在 python 中编写正则表达式时,总是在字符串前面加上那个 r,这有助于避免一些令人头疼的问题 :)


推荐阅读