1

我正在尝试使用 find/find_all-method 获得多个正则表达式匹配,但无法使其正常工作。

一段 HTML 代码可以是:

<b>Week</b> 22: 3871983

然后在代码中我正在尝试以下内容:

import re
from robobrowser import RoboBrowser

browser = RoboBrowser(parser='html.parser')
browser.open(some_url_containing_the_above_html_code)
result = browser.find_all(text=re.compile('Week\s+(\d+).*?(\d+)'))

print(result)

输出如下:

['Week 22:\xa3871983']

我期待的是:

['22', '3871983']

\xa 会破坏它吗?或者您不能在一个正则表达式中返回多个匹配项?真不知道怎么解决。我总是可以将返回值存储在一个字符串中,并使用拆分或正则表达式再次解析它,但我更愿意直接使用 find 或 find_all 获取它。

4

1 回答 1

0

find_all对函数的误解。它所做的所有操作都会返回与给定条件匹配的元素列表。在你的情况下,它是一个正则表达式。您的正则表达式有子模式。但这在这里并不重要。find_all不被正则表达式分割。所以

['Week 22:\xa3871983']

是预期的结果。如果您希望将其转换为 ['22', '3871983']

 import re
 for result in results:
     parts = re.split("\s", result)
     parts[0] = parts[0][4:]
于 2017-05-30T22:31:34.417 回答