Python Regex在Expresso中工作,而不是在IronPython中

2024-10-03 04:36:36 发布

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

回到我已经发布的HTML内容。试着学点正则表达式,即使我知道还有其他方法。我不是哑巴,就像挑战。。。在

我的表达是:

publisher.php\?c=.*?\">(.*?)</a>(?:.*?)<br\s\\>(?:[\s\r\n]*?)Date:\s<time\sdatetime="(.*?)\">(?:.*?)(?:[\s\r\n]*?)Pages:\s*?(\d*?)<br\s\\>

匹配:

^{pr2}$

如果我在Expresso中测试它,效果很好,但是当我在Python中运行它时,我的结果是group1立即没有结果。。。在

有什么线索吗?在

谢谢


Tags: 方法br内容datetimehtmlpagespublisher
2条回答

你如何在Python中运行它?你是作为一个原始字符串来转义吗?你添加了多行标志了吗?在

您混合使用双引号、单引号和反斜杠的方式可能会导致问题。例如,这个位看起来很奇怪:

c=.*?\">

但是对于我来说,在Linuxx86上使用Python2.6.6似乎是可行的。在

^{pr2}$
  1. regexp的所有实现都有细微差别。它在expresso中工作并不意味着它可以在Python中工作。这也可能是一个有不同标志默认值的问题,比如空白等。

  2. 不要使用regexp来匹配HTML或XML,除非情况很简单。使用为HTML/XML设计的库,如lxml或{a2}。

  3. 我只是想弄清楚你头痛的原因。见2。

  4. 当您这样做时:\\>您将创建一个反斜杠和一个大于号的括号。regexp将其解释为文本括号。您需要三个反斜杠:\\\>,或者更好:使用原始字符串,即使用r''而不是''。

  5. 使用BeautifulSoup。真正地。

相关问题 更多 >